【问题标题】:Previous Day's data using oracle 11g前一天使用 oracle 11g 的数据
【发布时间】:2016-06-23 05:11:31
【问题描述】:

目前我每 1 小时使用一次获取数据:

create_date >= sysdate -1/24

当进程在午夜 12:00 运行并且日期更改为第二天时,Oracle 中是否无论如何都可以提取前一天晚上 11 点到凌晨 12 点之间输入的数据。

谢谢

【问题讨论】:

  • 您的查询应该是这样做的。如果没有,请提供样本数据和所需结果。

标签: sql performance date plsql oracle11g


【解决方案1】:

如果您每小时运行该流程,您将继续前一小时。例如,如果您在上午 12:10 运行,则您的子句将从前一天的晚上 11:10 到当天的上午 12:10 获取所有内容。

如果你必须确保完全掌握所有内容,我建议你改变你的逻辑。如果您不这样做,并且您的程序由于某种原因没有运行,例如数据库因维护而关闭,您将错过处理一些记录

当您的程序启动时,捕获当前日期/时间并将其存储在一个表中。当您的程序运行时,获取该日期并将最后一个值用作您的起始值:

create_date between last_date and procedure_start_date

【讨论】:

    【解决方案2】:

    如果你没有在午夜运行 SQL,那么你可以使用 trunc 函数来做你想做的事情:

     create_date between trunc(sysdate) - 1/24 and trunc(sysdate)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-04
      • 2018-07-07
      • 2014-07-09
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多