SQL で 100 年をカバーするカレンダー テーブルを作成する
多数の日付を含むデータセットがあり、その年の日付や週数などの特定の情報を抽出する必要があるとします。カレンダー テーブルを作成すると、データをカレンダー テーブルに接続することで、この情報を簡単に取得できます。 SQL で 100 年間をカバーするカレンダー テーブルを作成する方法は次のとおりです。
<code class="language-sql">-- 开始日期:1901年1月1日 -- 结束日期:2099年12月31日 DECLARE @StartDate DATETIME = '19010101'; DECLARE @EndDate DATETIME = '20991231'; -- 创建日历表 CREATE TABLE Calendar ( CalendarDate DATETIME NOT NULL ); -- 将日期插入日历表 WHILE @StartDate <= @EndDate BEGIN INSERT INTO Calendar (CalendarDate) VALUES (@StartDate); SET @StartDate = DATEADD(day, 1, @StartDate); END;</code>
このスクリプトは、1901 年 1 月 1 日から 2099 年 12 月 31 日までの毎日を含むカレンダーを作成します。このテーブルを使用して、データから日付関連の情報を抽出できます。たとえば、次のクエリは 2 つの日付の間の日数を返します:
<code class="language-sql">SELECT DATEDIFF(day, StartDate, EndDate) FROM Calendar WHERE StartDate >= '20230101' AND EndDate <= '20230331';</code>
2023 年 1 月 1 日から 2023 年 3 月 31 日までの間に 90 日があるため、このクエリの結果は 90 になります。
以上が効率的な日付関連クエリのために SQL で 100 年のカレンダー テーブルを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。