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

问题描述 投票:0回答:2

我有两个当前的 SQL 查询,我目前使用它们来比较去年的 GM% 和今年的 GM%。这是我每天早上运行的每日报告。日期算法不是很可靠,我正在尝试寻找替代方法。以前我认为报告只会针对星期一,而不包括当天(即如果在星期二运行,它只会拉星期一。如果在星期一运行,它不会拉任何东西。)最近已经更改为 where when报告在周一运行,他们想在周五至周日查看。我正在考虑的是将其设置为拉动前 5 天,不包括当天。 (星期一运行会拉动星期四、星期五、星期六、星期日。)问题是它必须是今年的一天与去年的同一天比较。任何尝试过这个的人都知道要得到这个并不容易。这是我当前的日期算法代码。伙计们,我很茫然,我需要一些帮助。

Where DB1.TB1.CLM1>=Current Date-364 days - (DAYOFWEEK(CURRENT DATE) - 2) DAYS 
      And DB1.TB1.CLM1< Current Date- 364 days
sql date db2 ibm-midrange
2个回答
2
投票

如果我没听错,你会在周二提取周一的统计数据。周三,你会提取周一至周二的统计数据。周五,你拉周一至周四。对于所有这些,您需要前一年的同一天。

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

你还没有定义星期天要做什么,所以我把那个案子放在一边。

试试这个 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)
   ) 

0
投票

使用函数 YEAR 只提取那部分,如果那是唯一动态的东西。

BETWEEN YEAR(当前日期)-1 || '-01-01' 和年份(当前日期)+1 || '-12-31'

© www.soinside.com 2019 - 2024. All rights reserved.