使用 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 值的日期。