可以生成日期范围的另一种方法是通过使用提示表在范围之间创建日期:
Declare @FromDate Date = '2014-04-21', @ToDate Date = '2014-05-02' ;With E1(N) As (Select 1 From (Values (1), (1), (1), (1), (1), (1), (1), (1), (1), (1)) DT(N)), E2(N) As (Select 1 From E1 A Cross Join E1 B), E4(N) As (Select 1 From E2 A Cross Join E2 B), E6(N) As (Select 1 From E4 A Cross Join E2 B), Tally(N) As ( Select Row_Number() Over (Order By (Select Null)) From E6 ) Select DateAdd(Day, N - 1, @FromDate) Date From Tally Where N <= DateDiff(Day, @FromDate, @ToDate) + 1