我想为我的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毫秒,那么理想情况下,秒字段应该递增。我们知道有办法将时间戳转换为毫秒。有没有办法将毫秒转换回时间戳?或者,如果有任何方法可以向时间戳对象添加毫秒,这反映了几秒钟内的变化?
答案 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