在DB2中提取上一年的动态日期范围

时间:2013-02-22 20:42:52

标签: sql date db2 ibm-midrange

我目前有两个当前的SQL查询,用于比较去年的GM%和今年的GM%。这是我每天早上跑的每日报道。日期算术不是很稳固,我试图找到一个替代方案。以前我认为报告只会在周一前进,而不包括当天(即如果在周二运行,它只会在周一进行。如果在周一运行它不会拉动任何东西。)最近这已经变为何时该报告于周一播出,他们希望看到周五至周日。我正在考虑将其设置为拉动前5天,不包括当天。 (星期一跑将Thur,星期五,星期六,星期日。)问题是它必须是今年的一天与去年同一天比较。任何试过这个的人都知道得到这个并不容易。这是我目前的日期算术代码。我不知所措,我可以帮忙。

Where DB1.TB1.CLM1>=Current Date-364 days - (DAYOFWEEK(CURRENT DATE) - 2) DAYS 
      And DB1.TB1.CLM1< Current Date- 364 days

1 个答案:

答案 0 :(得分:2)

如果我听到你说对了,星期二你就会在周一提取统计数据。星期三,你为Mon-Tues统计数据。星期五,你拉周一至周四。对于所有这些,您需要前一年的同等日期。

诀窍是,现在星期一,你需要拉上周末,即周四至周日。

你还没有定义星期天要做什么,所以我要离开那个案子。

尝试这个WHERE语句:

where
   ( -- do this after Monday
   dayofweek(current date) > 2 and
   DB1.TB1.CLM1 between ((current date - 364 days) - (dayofweek(current date) - 2) days) and (current_date - 365 days)
   ) 
   or
   ( -- do this on Monday
   dayofweek(current date) = 2 and
   DB1.TB1.CLM1 between (current date - 368 days) and (current date - 365 days)
   )