Oracle:为我的timestamp对象添加毫秒

时间:2017-10-18 12:35:04

标签: sql oracle time oracle12c

我想为我的timestamp对象添加毫秒。例如,我必须将时间戳值增加25毫秒。

我以此为例

select to_char(systimestamp,'dd-mm-yyyy hh24:mi:ss.FF') as ts 
, to_timestamp(to_char(sysdate,'dd-mm-yyyy hh24:mi:ss.')||to_char(to_number(to_char(systimestamp,'FF')) + 250) 
,'dd-mm-yyyy hh24:mi:ss.FF') as ts_1 
from dual;

它可以工作并增加毫秒数。但它不会影响秒字段。例如,如果我们添加1000毫秒,那么理想情况下,秒字段应该递增。我们知道有办法将时间戳转换为毫秒。有没有办法将毫秒转换回时间戳?或者,如果有任何方法可以向时间戳对象添加毫秒,这反映了几秒钟内的变化?

2 个答案:

答案 0 :(得分:4)

您可以通过添加间隔来为时间戳添加时间。间隔时间可以缩短到几秒,但是0.001秒的间隔是一个毫秒间隔,您可以将其乘以所需的值。 E.g:

select systimestamp + interval '0.001' second * :millisecs from dual;

答案 1 :(得分:2)

使用区间文字:

SELECT SYSTIMESTAMP + INTERVAL '0.025' SECOND
FROM   DUAL

或动态创建NUMTODSINTERVAL的间隔:

SELECT SYSTIMESTAMP + NUMTODSINTERVAL( 25 / 1000, 'SECOND' )
FROM   DUAL

或者,使用绑定变量:

SELECT SYSTIMESTAMP + NUMTODSINTERVAL( :milliseconds / 1000, 'SECOND' )
FROM   DUAL