ホームページ >データベース >mysql チュートリアル >効率的な日付関連クエリのために SQL で 100 年のカレンダー テーブルを作成する方法

効率的な日付関連クエリのために SQL で 100 年のカレンダー テーブルを作成する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-21 01:17:07432ブラウズ

How to Create a 100-Year Calendar Table in SQL for Efficient Date-Related Queries?

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 サイトの他の関連記事を参照してください。

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