ホームページ >データベース >mysql チュートリアル >SQL Server で指定された 2 つの日付の間の一連の日付を生成するにはどうすればよいですか?
SQL Server で日付範囲を生成します
SQL Server では、テーブル内の指定された 2 つの日付の間の日付範囲を設定するタスクは、いくつかの方法を使用して簡略化できます。効率的な方法は、数表または計数表を使用して一連の整数を生成することです。
'2011-09-01' から '2011-10-10' までの日付をテーブルに設定するリクエストに基づいて、次のソリューションを実装できます:
<code class="language-sql">DECLARE @StartDate DATE = '20110901' , @EndDate DATE = '20111010' 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>
このコードは、1 から開始日と終了日の差までの整数のリストを生成します。各整数から 1 を引いて開始日に追加すると、「2011-09-01」で始まり「2011-10-10」で終わる日付のテーブルが生成されます。
あるいは、ゼロベースの計数テーブルを使用して計算を簡素化することもできます。
<code class="language-sql">CREATE TABLE [dbo].[nbrs]( [nbr] [INT] NOT NULL ) ON [PRIMARY] INSERT INTO dbo.nbrs (nbr) SELECT nbr-1 FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS nbr FROM sys.columns c ) nbrs DECLARE @StartDate DATE = '20110901' , @EndDate DATE = '20111010' SELECT DATEADD(DAY, nbr, @StartDate) FROM nbrs WHERE nbr <= DATEDIFF(DAY, @StartDate, @EndDate)</code>
数値テーブルをデータベースに永続的に保存すると、将来のクエリで再利用できるため、サブクエリや再帰の必要がなくなり、パフォーマンスと効率が確保されます。
以上がSQL Server で指定された 2 つの日付の間の一連の日付を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。