SQL Serverで指定した日付期間のデータを作成する
例えば出勤時刻・退勤時刻のデータを基に、タイムカードのような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 |