T-SQL での一連の日付の生成: 効率的な方法
この記事では、SQL Server バージョン 2005 以降と互換性のある T-SQL を使用して、指定された範囲内で一連の連続する日付を作成する効率的な手法について説明します。 WHILE
ループも可能なアプローチですが、日付範囲が大きくなると効率が低下する可能性があります。 優れた方法では、spt_values
システム テーブルを利用します。
最大 2047 日の日付範囲の場合、次の T-SQL クエリが効果的なソリューションを提供します。
<code class="language-sql">DECLARE @startDate DATETIME, @endDate DATETIME; SET @startDate = GETDATE(); SET @endDate = DATEADD(day, 100, @startDate); SELECT DATEADD(day, number, @startDate) AS IncrementalDate FROM (SELECT number FROM master.dbo.spt_values WHERE [type] = 'P') AS NumberSequence WHERE DATEADD(day, number, @startDate) < @endDate;</code>
このクエリは、spt_values
内の数値シーケンスを利用して日付系列を生成します。 シーケンス内の各数値を @startDate
に追加し、事実上、増加する日付を作成します。 WHERE
句は、生成された日付が @startDate
と @endDate
で定義された目的の範囲内に収まるようにします。 このアプローチにより、反復的な WHILE
ループ メソッドに関連することが多いパフォーマンスの制限が回避されます。
以上がT-SQL で一連の増加する日付を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。