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 |







