関数を使用して2つの日付間の日付のリストを取得する 質問する

関数を使用して2つの日付間の日付のリストを取得する 質問する

私の質問はこれMySQL に関する質問ですが、SQL Server を対象としています:

2 つの日付間の日数のリストを返す関数またはクエリはありますか? たとえば、ExplodeDates という関数があるとします。

SELECT ExplodeDates('2010-01-01', '2010-01-13');

これにより、次の値を持つ単一列のテーブルが返されます。

2010-01-01
2010-01-02
2010-01-03
2010-01-04
2010-01-05
2010-01-06
2010-01-07
2010-01-08
2010-01-09
2010-01-10
2010-01-11
2010-01-12
2010-01-13

ここではカレンダー/数字表が役立つかもしれないと思っています。


アップデート

提供された 3 つのコード回答を確認することにしました。実行結果 (バッチ全体の % として) は次のとおりです。

低い方が良い

私は Rob Farley の回答を採用しました。これが最も速かったからです。ただし、数表の解法 (KM と StingyJack の両方が回答で使用) は私のお気に入りです。Rob Farley の回答は 3 分の 2 の速さでした。

アップデート2

アリビアの答えはるかに簡潔です。承認された回答を変更しました。

ベストアンサー1

この数行は、SQL Server におけるこの質問に対する簡単な答えです。

WITH mycte AS
(
  SELECT CAST('2011-01-01' AS DATETIME) DateValue
  UNION ALL
  SELECT  DateValue + 1
  FROM    mycte   
  WHERE   DateValue + 1 < '2021-12-31'
)

SELECT  DateValue
FROM    mycte
OPTION (MAXRECURSION 0)

おすすめ記事