SQL Serverで制限なく指定した日付期間のデータを作成する

データベースSQLServer

記事内に広告が含まれています。

以前に「SQL Serverで指定した日付期間のデータを作成する」の記事を作成しましたが、その記事で紹介したSQLでは100件までという制限がありました。
今回は制限なく指定した日付期間のデータを作成するSQLを紹介します。

コーディング例

BEGIN
    DECLARE @StartYMD INT = 20240101;
    DECLARE @EndYMD INT = 20241231;

    WITH
        TBL AS (
            SELECT
                @StartYMD AS YMD
            UNION ALL
            SELECT
                CAST(CONVERT(VARCHAR, DATEADD(DAY, 1, CONVERT(DATE, CONVERT(VARCHAR, YMD))), 112) AS INT) AS YMD
            FROM
                TBL
            WHERE
                YMD < @EndYMD
        )
    SELECT * FROM TBL
    OPTION(MAXRECURSION 0);
END

実行結果

YMD
20240101
20240102
20240103
20240104
20240105
(省略)
20241227
20241228
20241229
20241230
20241231

18行目の「OPTION(MAXRECURSION 0)」により上限を無制限にしています。
「OPTION(MAXRECURSION 1000)」にすれば1,000行まで表示可能になります。
この記述がなければ100件まで表示可能となります。

以上、制限なく指定した日付期間のデータを作成するSQLの紹介でした。

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ