【问题标题】:SYSDATE - Timestamp to retrieve orders from last 2 minutesSYSDATE - 检索过去 2 分钟订单的时间戳
【发布时间】:2019-01-03 11:23:28
【问题描述】:

这在数据库包中用作传递数据的延迟。延迟是 2 分钟,所以我只需要检索在数据库中已存在 2 分钟或更长时间的记录。

这就是我所拥有的:

((SYSDATE - trunc(last_updated))*24*60) > l_delay_mins;

在这种情况下,l_delay_mins = 2 分钟。

但是,trunc 会截断时间并默认为午夜,当转换完成时,它会给我一天中的一小部分,然后乘以 24*60,它总是大于 2,所以记录不会被延迟并在他们到达后立即发送。

【问题讨论】:

    标签: sql oracle timestamp sysdate


    【解决方案1】:

    使用INTERVAL:

    where last_updated < systimestamp - (l_delay_mins * interval '1' minute);
    

    没有INTERVAL 也一样,但一分钟只是一天中的一小部分(你尝试过的那种):

    where last_updated < systimestamp - (l_delay_mins / 24 / 60)
    

    【讨论】:

      【解决方案2】:

      对上述答案的小修改

      使用INTERVAL:

      where last_updated <= systimestamp - (l_delay_mins * interval '1' minute);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-06
        • 2013-03-29
        • 1970-01-01
        相关资源
        最近更新 更多