始める無料で始める

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回の再帰ステップが必要です。 そのため、反復回数を表す nOPTION (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 ___)
コードを編集して実行