11

我有一个名为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.

在此先感谢您的帮助。

4

2 回答 2

22

您可以简单地从时间戳中减去一个时间间隔。

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')
于 2013-07-01T18:29:48.597 回答
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')

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

检查语法错误(如果有)

于 2013-07-01T18:19:58.480 回答