to_date 如何与 sysdate 一起工作

How to_date function with sysdate

select TO_CHAR(sysdate, 'YEAR')-365 FROM DUAL;

我收到错误

'invalide number'

查看 TO_CHAR(sysdate-365, 'YEAR') 的结果,然后考虑是否可以将其转换为能够减去 365 的数值。

'twenty fourteen' - 365

您可能需要上一年的日期:

add_months(sysdate, -12)

或者如果您需要今天前 365 天的年份:

extract(year from sysdate - 365)

您的代码

select TO_CHAR(sysdate, 'YEAR')-365 FROM DUAL;

不起作用,因为您尝试对字符串值 TO_CHAR(sysdate, 'YEAR') 进行数学运算,这是不正确的。 这会起作用

select EXTRACT(YEAR from sysdate)-365 FROM DUAL;

结果

1650

但这没有意义,所以也许你需要这个

select EXTRACT(YEAR from sysdate)-1 FROM DUAL;

结果

2014

TO_CHAR(sysdate, 'YEAR')

它将DATE转换为字符串。对于日期算法,对日期本身进行计算。

例如,

SELECT TO_CHAR(SYSDATE - 365, 'YEAR') FROM DUAL;