年计算
-- 下一年/年加1
select sysdate, sysdate+numtoyminterval(1,'year') from dual
select sysdate, add_months(sysdate,12) from dual
-- 上一年/年减1
select sysdate, sysdate-numtoyminterval(1,'year') from dual
select sysdate, add_months(sysdate,-12) from dual
月计算
-- 下一月/月加1
select sysdate, sysdate+numtoyminterval(1,'month') from dual
select sysdate, add_months(sysdate,1) from dual
-- 上一月/月减1
select sysdate, sysdate-numtoyminterval(1,'month') from dual
select sysdate, add_months(sysdate,-1) from dual
天计算
-- 下一天/天加1
select sysdate, sysdate+1 from dual
select sysdate, sysdate+numtodsinterval(1,'day') from dual
-- 上一天/天减1
select sysdate, sysdate-1 from dual
select sysdate, sysdate-numtodsinterval(1,'day') from dual
小时计算
-- 下一小时/小时加1
select sysdate, sysdate+1/24 from dual
select sysdate, sysdate+numtodsinterval(1,'hour') from dual
-- 上一小时/小时减1
select sysdate, sysdate-1/24 from dual
select sysdate, sysdate-numtodsinterval(1,'hour') from dual
分钟计算
-- 下一分钟/分钟加1
select sysdate, sysdate+1/24/60 from dual
select sysdate, sysdate+numtodsinterval(1,'minute') from dual
-- 上一分钟/分钟减1
select sysdate, sysdate-1/24/60 from dual
select sysdate, sysdate-numtodsinterval(1,'minute') from dual
秒计算
-- 下一分钟/分钟加1
select sysdate, sysdate+1/24/60/60 from dual
select sysdate, sysdate+numtodsinterval(1,'second') from dual
-- 上一分钟/分钟减1
select sysdate, sysdate-1/24/60/60 from dual
select sysdate, sysdate-numtodsinterval(1,'second') from dual
trunc()函数
-- 当天 0时0分0秒
select sysdate, trunc(sysdate) from dual
select sysdate, trunc(sysdate,'dd') from dual
-- 当月第一天 0时0分0秒
select sysdate, trunc(sysdate, 'mm') from dual
-- 返回当年第一天 0时0分0秒
select sysdate, trunc(sysdate,'yy') from dual
select sysdate, trunc(sysdate,'yyyy') from dual
-- (星期天)返回当前星期第一天 0时0分0秒
select sysdate, trunc(sysdate,'d') from dual
-- 当前小时 0分0秒
select sysdate, trunc(sysdate, 'hh') from dual
-- 当前分钟 0秒 (TRUNC()函数没有秒的精确)
select sysdate, trunc(sysdate, 'mi') from dual