ホームページ >データベース >mysql チュートリアル >SQL Server で日付範囲を生成するにはどうすればよいですか?

SQL Server で日付範囲を生成するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-15 07:44:44267ブラウズ

How to Generate Date Ranges in SQL Server?

SQL Server 内での日付範囲の生成

多くの場合、データベース管理者はテーブルに日付範囲を設定する必要があります。 この記事では、これを実現するための効率的な SQL Server の方法を示します。

一般的な手法の 1 つは、ROW_NUMBER() サブクエリを使用して数値シーケンスを生成することです。

<code class="language-sql">DECLARE @StartDate DATE = '20110901';
DECLARE @EndDate DATE = '20111001';

SELECT DATEADD(DAY, nbr - 1, @StartDate)
FROM (
    SELECT ROW_NUMBER() OVER (ORDER BY c.object_id) AS nbr
    FROM sys.columns c
) nbrs
WHERE nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate);</code>

このサブクエリは一連の数値を作成し、DATEADD() 開始日を数値ごとに増分して日付範囲を生成します。

よりパフォーマンスの高い代替方法では、既存の集計テーブル (利用可能な場合) を利用します。

<code class="language-sql">SELECT DATEADD(DAY, nbr, @StartDate)
FROM nbrs
WHERE nbr <= DATEDIFF(DAY, @StartDate, @EndDate);</code>

これにより、再帰的なクエリが回避され、大きな日付範囲を処理する際に速度が大幅に向上します。 集計テーブルには事前に生成された一連の数値が含まれているため、その場で数値を生成する必要がなくなります。

以上がSQL Server で日付範囲を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。