Sql 计算偏移处开始日期和结束日期之间的天数
我在SQL中创建了一个包含以下列的日历表: 现在,我有一个开始日期、结束日期和偏移量,并且必须计算天数,如下所述:Sql 计算偏移处开始日期和结束日期之间的天数,sql,sql-server,datetime,Sql,Sql Server,Datetime,我在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 我似乎想不出有什么疑问。在此方面的任何帮助都将不胜感激。使用模运算: select c.date from calendar c where c.date
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
我似乎想不出有什么疑问。在此方面的任何帮助都将不胜感激。使用模运算:
select c.date
from calendar c
where c.date >= @startdate and
c.date <= @enddate and
datediff(day, @startdate, c.date) % @offset = 0
您可以将CTE和ROW_编号与模->结合使用%
编辑:将此更改为更适合您的需要
请尝试以下代码:
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
我喜欢这个。我没有投反对票,但你的查询没有返回日期。@GordonLinoff,嗯,我在测试表中键入内容并不有趣,所以我展示了原则。。。OP应该没有问题,将此方法转移到给定场景中。。。也许是我太懒了:-