我有2个双周周期,由2个开始日期间隔1周定义。例如,第1组在2016-01-15
开始,第2组在2016-01-22
开始。
每两周一次,我指的是一个持续2周的滚动期。
如何确定当前日期是第1组第1周还是第2组第1周?
举例来说,今天的日期是2016-04-04
所以这将是第1组的第1天和第1组的第8天,因此我想查询返回'组2'
答案 0 :(得分:0)
DATEDIFF
计算两个日期之间的差异。除以14天,取余数(%
)。
如果余数小于7,则更接近该开始日期。
由于您知道您的开始日期相隔1周,因此您只需要检查一个开始日期。
DECLARE @VarStartGroup1 date = '2016-01-15';
DECLARE @VarStartGroup2 date = '2016-01-22';
DECLARE @VarCurrentDate date = '2016-04-04';
SELECT
DATEDIFF(day, @VarStartGroup1, @VarCurrentDate) AS TotalDays1,
DATEDIFF(day, @VarStartGroup2, @VarCurrentDate) AS TotalDays2,
DATEDIFF(day, @VarStartGroup1, @VarCurrentDate) % 14 AS DayNumberInGroup1,
DATEDIFF(day, @VarStartGroup2, @VarCurrentDate) % 14 AS DayNumberInGroup2,
CASE WHEN DATEDIFF(day, @VarStartGroup1, @VarCurrentDate) % 14 < 7
THEN 'Group1' ELSE 'Group2' END AS Result
;
<强>结果强>
+------------+------------+-------------------+-------------------+--------+
| TotalDays1 | TotalDays2 | DayNumberInGroup1 | DayNumberInGroup2 | Result |
+------------+------------+-------------------+-------------------+--------+
| 80 | 73 | 10 | 3 | Group2 |
+------------+------------+-------------------+-------------------+--------+
我在结果中包含了中间计算,以帮助理解发生了什么。