1年分の時系列を作成する
この演習の目的は、1年分の日付の系列を作成することです。次の2つの日時関数を使用します。
GETDATE()DATEADD(datepart, number, date)
GETDATE() で現在の日時(例: 2019-03-14 20:09:14)を取得し、DATEADD(month, 1, GETDATE()) で現在日時に1か月を加算した値(例: 2019-04-14 20:09:14)を得られます。
1年分の日付の系列を得るには、365回の再帰ステップが必要です。
そのため、反復回数を表す n を OPTION (MAXRECURSION n) で増やしてください。ここで n は反復回数を表します。
この演習はコースの一部です
SQL Server における階層型クエリと再帰クエリ
演習の手順
- 現在時刻を
timeとして初期化します。 - CTE を再帰的に選択し、アンカーメンバーと再帰メンバーを正しい句で結合します。
- 反復回数を「1年の日数 − 1」に制限します。
OPTION (MAXRECURSION n)を使って、最大反復回数を1年の日数に増やします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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 ___)