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

hgc7kmma  于 2023-04-20  发布在  DB2
关注(0)|答案(2)|浏览(176)

我有两个当前的SQL查询,我目前使用它来比较去年的GM%和今年的GM%。这是一个每天早上运行的日报表。日期算法不是很可靠,我正在试图找到一个替代方案。以前我认为该报告只会针对周一,不包括当天(即如果在周二运行,它只会拉周一。如果在周一运行,它不会拉任何东西。)最近这已经改变了当报告在周一运行时,他们希望看到周五-周日。我正在考虑的是将其设置为拉前5天,不包括当天。(星期一跑会拉周四,周五,周六,周日。)问题是,它必须是今年的一天与去年的同一天比较。任何人谁;我试过了,知道这是不容易得到的。这是我目前的日期算术代码。我不知所措的家伙,我可以使用一些帮助。

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

guz6ccqo1#

如果我没听错的话,星期二你要统计星期一的数据,星期三你要统计星期一到星期二的数据,星期五你要统计星期一到星期四的数据,对于所有这些数据,你需要一年前的一天的数据。
诀窍是,现在在星期一,你需要拉前一个周末,即周四-周日。
你还没有决定星期天要做什么,所以我把这个案子排除在外。
试试这个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)
   )
cgvd09ve

cgvd09ve2#

使用函数YEAR只提取那部分,如果那是它唯一动态的东西。
年份(当前日期)-1||'-01-01'和年份(当前日期)+1||十二点三十一分

相关问题