在一个指定的日期上加/减年月日进行查询,
select sysdate +/- interval 'n' 日期单位 from dual;
interval告诉系统相隔的时间数,日期单位有YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
如查询前一年的时间
select sysdate - interval '3' year from dual;
另外一种方法
select sysdate+/-n from dual; -- 查询 默认n的单位为天,如果向查询之前的时间 n可以为负数
select add_months(sysdate,n) from dual; -- n单位为月,若n为正小数则被截取为小于该数的最大整数,而负数则被截取为大于该数的最小整数
select add_months(sysdate,12*n) from dual;
例:add_months(to_date('29-Feb-96','d-mon-yyyy'),-12.99) 返回 28-Feb-95
注:上例中29调整为28,是因为96年二月份最后一天是29号,而95年二月份最后一天是28号。
add_months(to_date('15-Nov-1961','d-mon-yyyy'),1) 返回 15-Dec-1961
add_months(to_date('30-Nov-1961','d-mon-yyyy'),1) 返回 31-Dec-1961
注:从30调整为31,为了保持都是对应最后一天。
add_months(to_date('31-Jan-1999','d-mon-yyyy'),1) 返回 28-Feb-1999
注:函数将31日调为28日,以使结果对应新一月的最后一天,因1999年2月只有28天。