如何将Oracle Timestamp值从当前更新为过去的时间戳

ila*_*ngo 9 sql oracle

我有一个叫做Oracle的桌子EVENT_TABLE_T.它有一个名为的列LAST_UPDATE_DT.此列中的一个示例值是:01-JUL-13 11.20.22.37448900 AM.有超过700行具有相同的时间戳值.我想使用SQL语句将此值更新为此日期之前的45天.例如,01-JUL-13 11.20.22.37448900 AM在我的心算之后,应该成为:( 15-May-13 11.00.00......恰好45天).如果这是成功的,我想对不同的值应用更新,LAST_UPDATE_DT这反映了可以追溯到46天的值.

我希望通过提出这个问题来实现的目的是能够学习Oracle日期和时间戳的基础知识,并将它们应用到我的批处理工作中.我希望能够从Oracle SQL Developer以及Java内部运行此更新sql语句PreparedStatement.

在此先感谢您的帮助.

Dav*_*sta 16

您只需从时间戳中减去时间间隔即可.

UPDATE EVENT_TABLE_T 
SET LAST_UPDATE_DT = last_update_dt - interval '45' day
WHERE LAST_UPDATE_DT = TO_TIMESTAMP('01-JUL-2013 11:20:22:37448900','DD-MON-YYYY HH24: MI:SS:FF')
Run Code Online (Sandbox Code Playgroud)


Arn*_*ati 5

尝试类似:

    UPDATE EVENT_TABLE_T 
SET LAST_UPDATE_DT = TO_TIMESTAMP('15-MAY-2013 11:00:00:00','DD-MON-YYYY HH24:MI:SS:FF')
WHERE LAST_UPDATE_DT = TO_TIMESTAMP('01-JUL-2013 11:20:22:37448900','DD-MON-YYYY HH24: MI: SS:FF')
Run Code Online (Sandbox Code Playgroud)

类似于您想要返回 46 天的更新。

检查语法错误(如果有)