计算偏移量的开始日期和结束日期之间的天数

时间:2016-12-13 16:43:15

标签: sql sql-server datetime

我在SQL中创建了一个带有以下列的日历表:

enter image description here

现在我有一个开始日期,结束日期和偏移量,并且必须按照以下说明计算天数:

start date: 1-12-2016----End date: 10-12-2016----Offset: 2

输出:

1-12-2016
3-12-2016
5-12-2016
7-12-2016
9-12-2016

我似乎无法考虑对此进行查询。在这方面的任何帮助将受到高度赞赏。

2 个答案:

答案 0 :(得分:3)

使用模运算:

select c.date
from calendar c
where c.date >= @startdate and
      c.date <= @enddate and
      datediff(day, @startdate, c.date) % @offset = 0

答案 1 :(得分:0)

您可以使用与ROW_NUMBER()

相关的CTE和modulo -> %

编辑:更改此内容以更好地满足您的需求

请尝试以下代码:

DECLARE @Offset INT=3;
DECLARE @start DATE={d'2016-12-01'};
DECLARE @end DATE={d'2016-12-10'};

WITH Numbered AS
(
    SELECT *
          ,ROW_NUMBER() OVER(ORDER BY t.DateKey)  AS Nr
    FROM YourTable AS t
    WHERE t.Date>=@start AND t.Date<=@end
)
SELECT *
FROM Numbered
WHERE (Nr % @Offset)=1