https://blog.csdn.net/zhangbingtao2011/article/details/79150087
oracle数据库中有多种对日期加减的计算方法,废话不多说,开始。
1、直接加减。
(1)求当前时间及一天后:
select sysdate,sysdate + 1 from dual;
输出为:
2018-1-24 14:05:19 2018-1-25 14:05:19
(2)求当前时间及一小时后:
select sysdate,sysdate + 1/24 from dual;
输出为:
2018-1-24 14:07:45 2018-1-24 15:07:45
求分钟及秒只要做相应除法即可。
不过此种方法不能做月的加减,因为每月的天数不一样。
2、用函数add_months。
(1)求当前时间及一年后:
select sysdate,add_months(sysdate,1*12) from dual;
输出为:
2018-1-24 14:11:03 2019-1-24 14:11:03
(2)求当前时间及一月后:
select sysdate,add_months(sysdate,1) from dual;
输出为:
2018-1-24 14:11:03 2018-2-24 14:11:03
同样,此方法不能做天及更小的时间加减,因为每月天数不一样的原因。
3、使用numtoyminterval(发音:num to Y M interval)或numtodsinterval(发音:num to D S interval)函数。
(1)求当前时间及一年后:
select sysdate,sysdate + numtoyminterval(1,'year') from dual;
输出为:
2018-1-24 14:32:34 2019-1-24 14:32:34
(2)求当前时间及一月后:
select sysdate,sysdate + numtoyminterval(1,'month') from dual;
输出为:
2018-1-24 14:33:49 2018-2-24 14:33:49
(3)求当前时间及一天后:
select sysdate,sysdate + numtodsinterval(1,'day') from dual;
输出为:
2018-1-24 14:34:52 2018-1-25 14:34:52
(4)求当前时间及一小时后:
select sysdate,sysdate + numtodsinterval(1,'hour') from dual;
输出为:
2018-1-24 14:35:47 2018-1-24 15:35:47
(5)求当前时间及一分钟后:
select sysdate,sysdate + numtodsinterval(1,'minute') from dual;
(6)求当前时间及一秒后:
select sysdate,sysdate + numtodsinterval(1,'second') from dual;
相比而言,第三种函数功能还是比较强大的,但是拼写字母太多,用的比较少,毕竟前两种已经够用了。