使用递归 CTE 生成日期范围

使用递归 CTE,你可以生成包含范围的日期:

Declare  @FromDate    Date = '2014-04-21',
         @ToDate      Date = '2014-05-02'

;With DateCte (Date) As
(
    Select  @FromDate Union All
    Select  DateAdd(Day, 1, Date)
    From    DateCte
    Where   Date < @ToDate
)
Select  Date
From    DateCte
Option  (MaxRecursion 0)

默认的 MaxRecursion 设置为 100.使用此方法生成超过 100 个日期将需要查询的 Option (MaxRecursion N) 段,其中 N 是所需的 MaxRecursion 设置。将此设置为 0 将完全取消 MaxRecursion 限制。