Oracle获取某一段时间间隔之后的日期

现在有如下几个需求:
1)显示距离现在1.5天之后的时间。
2)显示距离现在6个小时之后的时间。
3)显示距离现在6个月之后的时间。
4)显示距离现在10年之后的时间。

我们当然可以通过sysdate转换进行加减来操作,除了常规的方式之外,Oracle还提供了一种函数,这些函数可用于表示一段时间的间隔,他们是NUMTODSINTERVAL和NUMTOYMINTERVAL。

1.5天之后的函数表示:NUMTODSINTERVAL(1.5,'day')
SELECT NUMTODSINTERVAL(1.5,'day') FROM DUAL;


结果如下:
NUMTODSINTERVAL(1.5,'DAY')
--------------------------------------
+000000001 12:00:00.000000000

6个小时之后的函数表示:NUMTODSINTERVAL(6,'hour')
SELECT NUMTODSINTERVAL(6,'hour') FROM DUAL;


结果如下:
NUMTODSINTERVAL(6,'HOUR')
----------------------------------------
+000000000 06:00:00.000000000

6个月之后的函数表示:NUMTOYMINTERVAL(6,'month')
SELECT NUMTOYMINTERVAL(6,'month') FROM DUAL;


结果如下:
NUMTOYMINTERVAL(6,'MONTH')
--------------------------------
+000000000-06

10年之后的函数表示:NUMTOYMINTERVAL(10,'year')
SELECT NUMTOYMINTERVAL(10,'year') FROM DUAL;


结果如下:
NUMTOYMINTERVAL(10,'YEAR')
--------------------------------------
+000000010-00

基于此,我们就很容易获得上面四种问题的答案如下:
0)现在的时间
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUAL;


结果如下:
TO_CHAR(SYSDATE,'YY
-------------------
2013-01-27 20:54:48

1)显示距离现在1.5天之后的时间。
SELECT TO_CHAR(SYSDATE+NUMTODSINTERVAL(1.5,'day'),'YYYY-MM-DD HH24:MI:SS') FROM DUAL;


结果如下:
TO_CHAR(SYSDATE+NUM
-------------------
2013-01-29 08:55:20

2)显示距离现在6个小时之后的时间。
SELECT TO_CHAR(SYSDATE+NUMTODSINTERVAL(6,'hour'),'YYYY-MM-DD HH24:MI:SS') FROM DUAL;


结果如下:
TO_CHAR(SYSDATE+NUM
-------------------
2013-01-28 02:55:30

3)显示距离现在6个月之后的时间。
SELECT TO_CHAR(SYSDATE+NUMTOYMINTERVAL(6,'month'),'YYYY-MM-DD HH24:MI:SS') FROM DUAL;


结果如下:
TO_CHAR(SYSDATE+NUM
-------------------
2013-07-27 20:55:39

4)显示距离现在10年之后的时间。
SELECT TO_CHAR(SYSDATE+NUMTOYMINTERVAL(10,'year'),'YYYY-MM-DD HH24:MI:SS') FROM DUAL;

作者 陈字文(热衷于PM\ORACLE\JAVA等,欢迎同行交流):ziwen#163.com 扣扣:4零9零2零1零零

结果如下:
TO_CHAR(SYSDATE+NUM
-------------------
2023-01-27 20:55:47
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值