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

2019-10-06SQLServer

例えば出勤時刻・退勤時刻のデータを基に、タイムカードのような1ヶ月分の出退データを出力する場合、出勤時刻や退勤時刻は主に平日だけしかデータがないので、ベースとなる1ヶ月分の日付データを作成する必要があります。
そういった場合に使える、指定した日付期間のデータを作成するSQLを紹介します。

コーディング例

BEGIN
    DECLARE @StartYMD INT = 20190401;
    DECLARE @EndYMD   INT = 20190430;

    WITH
        TBL AS (
            SELECT
                @StartYMD AS [日付]
            UNION ALL
            SELECT
                CAST(CONVERT(VARCHAR,DATEADD(DAY,1,CONVERT(DATE,CAST([日付] AS VARCHAR))),112) AS INT) AS [日付]
            FROM
                TBL
            WHERE
                [日付] < @EndYMD
        )
    SELECT
        [日付]
    FROM
        TBL
    ORDER BY
        [日付]
    ;

END

実行結果

日付
20190401
20190402
20190403
20190404
20190405
20190406
20190407
20190408
20190409
20190410
20190411
20190412
20190413
20190414
20190415
20190416
20190417
20190418
20190419
20190420
20190421
20190422
20190423
20190424
20190425
20190426
20190427
20190428
20190429
20190430

 

株式会社システムトラスト

人材募集中です。

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

お問合せ