使用 CTE 生成日期表
DECLARE @startdate CHAR(8), @numberDays TINYINT
SET @startdate = '20160101'
SET @numberDays = 10;
WITH CTE_DatesTable
AS
(
SELECT CAST(@startdate as date) AS [date]
UNION ALL
SELECT DATEADD(dd, 1, [date])
FROM CTE_DatesTable
WHERE DATEADD(dd, 1, [date]) <= DateAdd(DAY, @numberDays-1, @startdate)
)
SELECT [date] FROM CTE_DatesTable
OPTION (MAXRECURSION 0)
此示例返回一个日期的单列表,从 @startdate 变量中指定的日期开始,并返回下一个 @numberDays 值的日期。