90天窗口+/- 14天重复,以及如何查找匹配的记录

时间:2016-11-25 15:55:50

标签: sql sql-server

我正在使用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天。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您希望天-14 - 0(在零之前)和0 - 14(在零之后)。
% 90会将值从0提供给89(无否定值)。但由于它循环并重置为90,因此-14 - 076 - 89相同。

所以你想要几天0 - 1476 - 89

where datediff(day, baseline_date, GETDATE()) % 90 not between 15 and 75