建立一整年的時間序列
本練習的目標是建立一整年天數的序列。為了完成這個任務,你需要使用下列兩個時間/日期函式:
GETDATE()DATEADD(datepart, number, date)
使用 GETDATE() 可以取得現在時間(例如:2019-03-14 20:09:14),而 DATEADD(month, 1, GETDATE()) 會得到現在時間再加上一個月(例如:2019-04-14 20:09:14)。
若要產生一整年的每日序列,你需要 365 個遞迴步驟。
因此,請用 OPTION (MAXRECURSION n) 來增加疊代次數,其中 n 代表疊代次數。
本練習屬於課程
SQL Server 的階層式與遞迴查詢
練習說明
- 將現在時間初始化為
time。 - 以遞迴方式選取 CTE,並用正確的語句結合錨點與遞迴成員。
- 將疊代次數限制為一年中的天數減 1。
- 使用
OPTION (MAXRECURSION n),把最大疊代次數提高到一年中的天數。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
WITH time_series AS (
SELECT
-- Get the current time
___ AS time
UNION ALL
SELECT
DATEADD(day, 1, time)
-- Call the CTE recursively
FROM ___
-- Limit the time series to 1 year minus 1 (365 days -1)
WHERE time < GETDATE() + ___)
SELECT time
FROM time_series
-- Increase the number of iterations (365 days)
OPTION(MAXRECURSION ___)