取去年今天的算法语句:
select (SYSDATE - INTERVAL '1' YEAR) from dual
执行时报错:ORA-01839: date not valid for month specified。
这个语句执行以来,一直未曾报错,今天为何就报错了呢?
原来今天是2月29日,润年。
select (SYSDATE - INTERVAL '1' YEAR) from dual 报错
而执行
select (to_date('2024-02-28','yyyy-mm-dd') - INTERVAL '1' YEAR) from dual; 正确。
-- 结果 2023-02-28
说明:这是oracle的bug。
解决办法:
取去年今天的算法语句改为
SELECT add_months(trunc(SYSDATE),-12) FROM DUAL; -- 结果 2023-02-28
OracleSQL中的闰年日期处理问题及其解决,
文章讨论了在Oracle中因闰年导致的SQL语句错误,提出用ADD_MONTHS和TRUNC函数替代原方法获取去年日期。
6273

被折叠的 条评论
为什么被折叠?



