我有一个查询,从上个月20日到本月19日收集数据,似乎有效。
(DateTime >= 19+dateadd(mm,datediff(mm,0,getdate())-1,0)
AND DateTime < 18+dateadd(mm,datediff(mm,0,getdate()),0))
我现在需要以某种方式修改它以满足以下...
无论何时运行,始终显示当前报告。
目前发生的事情是.....如果在上个月20日到本月19日之间的任何时间运行,它会很有效.....但是一旦它在本月20日到达第31个月这个月....它一直显示最后一个时期....技术上我要求它做。
我需要的是.....当它成为本月20日......它会开始一个新的报告。
正如我所说.....问题期间是在20日到月底之间。一旦新月开始......一切都很好。
在运行报告时,必须考虑到这一点。
感谢。
戴夫
答案 0 :(得分:0)
(
(Day(GetDate()) > 19 and create_date between dateadd(mm, datediff(mm, 0, getdate()), 0) + 19 and dateadd(mm, datediff(mm, 0, getdate()), 0) + 18)
or (Day(GetDate()) < 20 and create_date between dateadd(mm, datediff(mm, 0, getdate())-1, 0) + 19 and dateadd(mm, datediff(mm, 0, getdate())-1, 0) + 18)
)
它实质上会检查当前日期是否大于19并应用您当前的逻辑而不减去一个月。我当前的日期小于你当前逻辑应用的第20天。
答案 1 :(得分:0)
(
DateTime >= CASE WHEN day(GETDATE()) >= 20 THEN 19 + dateadd(mm, datediff(mm, 0, getdate()), 0) ELSE 19 + dateadd(mm, datediff(mm, 0, getdate()) - 1, 0) END AND
DateTime < CASE WHEN day(GETDATE()) >= 20 THEN 18 + dateadd(mm, datediff(mm, 0, getdate())+ 1, 0) ELSE 18 + dateadd(mm, datediff(mm, 0, getdate()), 0) END
)