select TO_CHAR(sysdate, 'YEAR')-365 FROM DUAL;
我收到错误
' invalide number'
答案 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;