多个日期范围的两个日期之间的天数

时间:2017-08-30 12:40:32

标签: sql tsql

简单问题: 我该如何使用此表:

Date    Start          End 
Date1   22-4-2017    6-5-2017
Date2   3-6-2017     17-6-2017
Date3   27-5-2017    2-6-2017

获得此输出:

Date   Day  Date
Date1   1   22-4-2017
Date1   2   23-4-2017
Date1   3   24-4-2017
Date1   4   25-4-2017
Date1   5   26-4-2017

(直到最后一天,同时为date2和date3)

1 个答案:

答案 0 :(得分:2)

如果使用SQL Server,您可以使用与CROSS APPLY

一致的临时计数表

示例

Select A.Date
      ,DayNo  = B.N
      ,Date2  = DateAdd(DAY,N-1,A.[Start])
 From  YourTable A
 Cross Apply (
                Select Top (DateDiff(DAY,[Start],[End])+1) 
                       N = Row_Number() Over (Order By (Select Null))
                 From  master..spt_values n1,master..spt_values n2
             ) B

<强>返回

enter image description here