SQL 临时日期 table 生成

SQL temp date table generation

我想知道有没有一种方法可以生成包含日期但使用介于两者之间的临时 table,因为我必须使用这样的结构。

between Convert(datetime, '2022-01-01T00:00:00.000', 126) and Convert(datetime, '2022-03-04T23:59:59.998', 126)

我的意思是它应该在 StartDate,EndDate 之间使用。

获取温度的选项table。不是 100% 它会执行所需的操作。希望这有帮助。

 DECLARE  @start_date date = '2022-01-01',
         @end_date date = '2022-03-04'

;WITH cte AS (
SELECT @start_date as DateRet
UNION ALL
SELECT CAST(DATEADD(day,1,dateRet) as date)
FROM cte
WHERE dateret < @end_date
)

SELECT *
into #tmpDates
FROM cte

另一个我认为比递归 CTE 表现更好的选项

WITH N AS(
    SELECT N
    FROM (VALUES(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL))N(N)),
Tally AS(
    SELECT 0 AS I
    UNION ALL
    SELECT TOP (DATEDIFF(DAY, '20220101', '20220304')) 
           ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
    FROM N N1, N N2, N N3),
Dates AS(
    SELECT DATEADD(DAY, T.I, '20220101') AS Date
    FROM Tally T)
SELECT D.Date
into #tmpDates
FROM Dates D

编辑
我的数据库中总是有一个日历 table,所以我可以加入它。这表现得很好,查询也容易得多