首页 > 解决方案 > iSeries DB2 SYSIBM/SYSDUMMY1 更新的时间安排

问题描述

我有一个简单的查询来从 SYSIBM/SYSDUMMY1 中提取 DAYOFWEEK 以确定是否清除跟踪昨天销售的表。

    DELETE FROM DAILYSALES WHERE (CASE WHEN (SELECT DAYOFWEEK(CURRENT DATE) 
  FROM SYSIBM/SYSDUMMY1)   
  BETWEEN 3 AND 6 THEN 'YES' ELSE 'NO' END) = 'YES';

由于在星期一 (dayofweek=2) 运行的报告需要星期五 (dayofweek=6)、星期六 (dayofweek=7)、星期日 (dayofweek=1) 销售量 (today-1 来计算日期),我应该请参阅第 6、7 和 1 天的销售数据。

但是,它似乎保留了周四(dayofweek=5)的销售额,而不是在周一早上运行时拉动周日的销售额(dayofweek=1)。这让我相信 SYSDUMMY1 使用的日期直到午夜过后很久才会翻转,即使我们的系统日期在美国东部标准时间午夜翻转。

它在本周剩下的时间里运行良好,提供了“昨天”的正确销售数据。当我从 SYSIBM.SYSDUMMY1 手动运行 Select DAYOFWEEK(current date) 时,它总是显示正确的星期几。我错过了什么?

标签: db2ibm-midrangedayofweek

解决方案


我在 DAILYSALES 中看不到任何列的相关性(使用)。

因此

(CASE WHEN (SELECT DAYOFWEEK(CURRENT DATE) 
  FROM SYSIBM/SYSDUMMY1)   
  BETWEEN 3 AND 6 THEN 'YES' ELSE 'NO' END)

仅评估一次,如果进程在星期一运行,将返回2==> NO,因此不会删除任何行。

我怀疑DAILYSALES 表中的列在哪里而不是DAYOFWEEK(CURRENT DATE) 你想要的。DAYOFWEEK(SALESDATE)SALESDATE

最后请注意,SYSIBM.SYSDUMMY1 只有一个 char(1) 列IBMREQ和一行,该列的值设置为“Y”。此表中从未更新任何内容。


推荐阅读