【问题标题】:SQL : DB2 run a "sql" if its within particular timeSQL:如果在特定时间内 DB2 运行“sql”
【发布时间】:2013-05-18 16:21:54
【问题描述】:

我们公司正在使用 DB2,并且我们有一个调度程序(我无权访问),它每 5 分钟运行一组 SQL 文件。我可以控制 SQL 语句

文件中的一条 SQL 每天只需要运行两次,而且非常繁重。所以每 5 分钟运行一次它会杀死系统。

因此我的问题/情况是,

  • 是否有一种巧妙的方法来修改 SQL,以便它检查它是否在规定的时间段内,然后运行它。 (即不执行逻辑,如果它在特定时间之外)?
  • 我无法将脚本或 if 循环作为纯 SQL。所以修正 需要在数据操作语言 (DML) 语句中
  • 如果我只是简单地添加一个硬编码的时间参数,DB2 会执行 逻辑然后做时间检查。否则,将硬编码的时间参数放入 SQL 中会非常简单。

提前致谢

【问题讨论】:

    标签: sql db2 dml


    【解决方案1】:

    试试这样的。它首先获取当前时间戳,并将您的查询交叉连接到它。优化器会很聪明地看到“A”没有任何行,也不会运行“B”。

    SELECT B.*
    FROM (SELECT CURRENT TIME AS CTIME FROM SYSIBM.SYSDUMMY1) A
    JOIN (...your_query...) B
      ON 1=1
    WHERE A.CTIME BETWEEN '08:00:00' AND '09:00:00'
    

    【讨论】:

    • 对不起,我忘了问:在执行 Where 子句之前会先执行 (...your_query...) 吗?
    • @diaryfolio 不在我的测试中。我在 DB2 for z/OS 10 和 LUW 9.7 上尝试过
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多