Microsoft SQL Server 使用递归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完全消除限制。