1.
在对某些表进行旧数据的删除,必然是通过【时间】删除之前较为久远的数据,比如1年前,6个月前,7天前的数据等等情况,这个时候的SQL,必然会出现条件: where time < 时间 - 间隔
对于oralce来说,当时使用了 where time < SYSDATE - INTERVAL '10' MONTH ,一开始自测也好好的,之后则报错:ORA-01839:指定月份的日期无效
2.
导致会报错ORA-01839:指定月份的日期无效的原因如下:
若此时日期是:2023-05-31,使用SQL - INTERVAL '3' MONTH,则会得到2023-02-31,2月份不可能会有31号
因此会报错指定月份的日期无效,该报错不是说- INTERVAL '3' MONTH中的3有问题,而是指得到的结果日期有问题
INTERVAL 不会特殊处理 2月份的情况,因此是有一定缺陷的。
解决方法:使用oracle中的ADD_MONTHS函数,其是会自动调整日期:
使用方式:ADD_MONTHS(日期,正负数字),如:ADD_MONTHS(日期,3) 是向后加三个月,ADD_MONTHS(日期,-3) 是向前减三个月
若此时日期是:2023-05-31,使用SQL ADD_MONTHS('2023-05-31',-3),则会得到2023-02-28,不会报错,是函数自带处理。