oracle在处理日期函数的时候有下面两种表示方法:
1、select to_char((sysdate - interval '1' month),'yyyy-mm-dd') from dual;
2、select add_months(sysdate,-1) from dual;
第一种方法使用的是相隔的方法,oracle在处理的时候不进行逻辑判断;比如今天是10月31号,计算一个月前的时间就会报错,因为9月份没有31号。但是如果使用内置函数add_months的话,内部就进行处理,会判断出一个月前是9月30号
select to_char((sysdate - interval '1' month),'yyyy-mm-dd') from dual;
>[错误] 脚本行:8-8 ---------------------------------------
ORA-01839: 指定月份的日期无效
脚本行 8,语句行 1,列 24
select add_months(sysdate,-1) from dual
ADD_MONTHS(SYSDATE,-1)
-------------------------
2013-9-30 下午4:18:24
所以在计算时间相隔的时候,尽量使用内置函数add_months
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28803801/viewspace-775431/
,如需转载,请注明出处,否则将追究法律责任。