【问题标题】:How to update Oracle Timestamp value from the current to a timestamp from the past如何将 Oracle 时间戳值从当前更新为过去的时间戳
【发布时间】:2018-02-17 15:03:33
【问题描述】:

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

提前感谢您的帮助。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

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

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

    【讨论】:

    • 正是我想要的。 Ravi 的回答让我朝着正确的方向前进,Arban 补充了你的回答。
    【解决方案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 天的更新类似。

    检查是否有语法错误

    【讨论】:

    • 您的声明可以将我当前的日期设置(更新)为过去的某个日期。不完全是我想要的,但我从你的回答中获得了另一个重要的概念。赞赏。
    猜你喜欢
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2014-02-23
    • 2021-07-26
    • 2017-07-07
    • 2020-12-10
    • 2016-08-05
    • 1970-01-01
    相关资源
    最近更新 更多