取去年今天的算法语句:
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