如何使用sysdate进行to_date功能

时间:2015-05-22 14:09:59

标签: sql oracle oracle10g

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

我收到错误

  

' invalide number'

3 个答案:

答案 0 :(得分:2)

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

'twenty fourteen' - 365

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

add_months(sysdate, -12)

或者如果您需要在今天前365天完成这一年:

extract(year from sysdate - 365)

答案 1 :(得分:1)

您的代码

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

答案 2 :(得分:0)

  

TO_CHAR(sysdate,'年')

DATE 转换为字符串。对于日期算术,请对日期本身进行计算。

例如,

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