我在SQL中创建了一个带有以下列的日历表:
现在我有一个开始日期,结束日期和偏移量,并且必须按照以下说明计算天数:
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
我似乎无法考虑对此进行查询。在这方面的任何帮助将受到高度赞赏。
答案 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()
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