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

时间:2013-07-01 18:00:18

标签: sql oracle

我有一个名为EVENT_TABLE_T的Oracle表。它有一个名为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 PreparedStatement.

内部运行此更新sql语句

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:15)

您只需从时间戳中减去时间间隔。

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')

答案 1 :(得分:2)

尝试类似:

    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')

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

检查是否存在语法错误