oracle日期加减计算

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;

相比而言,第三种函数功能还是比较强大的,但是拼写字母太多,用的比较少,毕竟前两种已经够用了。

猜你喜欢

转载自blog.csdn.net/zhangbingtao2011/article/details/79150087