我正在使用T-SQL,我希望使用最简单的'来查找一些值。查询可能。我的意思是,我希望能够在一个语句/ where子句中执行此逻辑,如果可能的话。
用户有一个基准日期(比如2016年11月25日),每90天(+/- 14天)一个时间窗口'打开,允许他们访问一些数据。在这种情况下,它将在2017年2月9日至2017年3月9日之间。这是一个持续的安排,因此在2017年2月23日之后90天(+/- 14天)再次发生同样的事情。
我需要能够只知道基线日期来计算用户是否在任何这些窗口中。
我最初考虑使用DATEDIFF(DAY, baseline_date, GETDATE()) % 90 = 0
,但我意识到我不能让我考虑+/- 14天。
有什么想法吗?
答案 0 :(得分:2)
您希望天-14 - 0
(在零之前)和0 - 14
(在零之后)。
% 90
会将值从0
提供给89
(无否定值)。但由于它循环并重置为90,因此-14 - 0
与76 - 89
相同。
所以你想要几天0 - 14
和76 - 89
:
where datediff(day, baseline_date, GETDATE()) % 90 not between 15 and 75