Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 计算偏移处开始日期和结束日期之间的天数_Sql_Sql Server_Datetime - Fatal编程技术网

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

我在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 >= @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应该没有问题,将此方法转移到给定场景中。。。也许是我太懒了:-