如何在Oracle 时间戳中添加秒数

3
我该如何在Oracle中给时间戳加上秒数呢?我尝试了以下方法...
SELECT CURRENT_TIMESTAMP , CURRENT_TIMESTAMP+200 AS addedTime FROM dual

但是我现在得到的是这个

2018-06-04 19:03:01 => 2018-12-21 19:03:01(加上200之后)

你可以看到日期被加上了,但是我只想添加秒…

这个SQL在DB2中运行正常,请问有没有适合在Oracle中替代的方法。


3
可能是 如何在当前时间戳 SQL(Oracle)中添加10秒 的重复问题。 - WhatsThePoint
2个回答

5
你可以始终使用分数(对于Oracle 1 = 1天):
SELECT CURRENT_TIMESTAMP ,
       CURRENT_TIMESTAMP + 200 *(1/24/60/60) AS addedTime 
FROM dual;
<=>
SELECT CURRENT_TIMESTAMP + 200/86400 FROM dual

DBFiddle演示

或:

SELECT CURRENT_TIMESTAMP + INTERVAL '200' SECOND FROM dual

2

在Oracle中,日期/时间运算是以天为单位的。因此,将200添加到Oracle DATETIMESTAMP对象中会添加200天。如果您想添加秒数,可以使用间隔或添加分数天数。就我个人而言,对于像秒这样细粒度的东西,我更喜欢使用间隔; 对于从小时开始的任何内容,我都使用常规日期运算或ADD_MONTHS()(间隔月份和年份特别危险,因为它们不安全闰年,而ADD_MONTHS()是安全的)。

SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '200' SECOND FROM dual;

请注意,时间间隔值周围的单引号是必需的;INTERVAL 200 SECOND会导致错误。
希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接