我想知道有沒有一種方法可以生成一個包含日期但在中間使用的臨時表,因為我必須使用這樣的構造。
between Convert(datetime, '2022-01-01T00:00:00.000', 126) and Convert(datetime, '2022-03-04T23:59:59.998', 126)
我的意思是它應該在不是 StartDate,EndDate 之間使用。
uj5u.com熱心網友回復:
我認為比遞回 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
編輯
我的資料庫中總是有一個日歷表,所以我可以加入它。這執行得很好,查詢更容易
uj5u.com熱心網友回復:
獲取臨時表的選項。不是 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/452571.html
下一篇:T-SQL和SSRS多引數
