SQL Serverで制限なく指定した日付期間のデータを作成する
以前に「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の紹介でした。







