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) 时,它总是显示正确的星期几。我错过了什么?

解决方法

我在 DAILYSALES 中没有看到任何列的相关性(使用)..

因此

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

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

我怀疑您想要的是 DAYOFWEEK(CURRENT DATE) 而不是 DAYOFWEEK(SALESDATE),其中 SALESDATE 是 DAILYSALES 表中的一列。

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