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

SQL を使用して特定の範囲内の日付のリストを生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-23 17:11:09
オリジナル
777 人が閲覧しました

How to Generate a List of Dates Within a Specific Range Using SQL?

SQL を使用して日付範囲内の日付のリストを生成します

データの分析と管理では、指定された日付範囲内の日付リストを生成することが必要になることがよくあります。これは効率的な SQL クエリを通じて実現できます。

1 つの方法は、サブクエリを使用して日付シーケンスを生成することです。たとえば、次のクエリは過去 10,000 日の日付のリストを生成します:

<code class="language-sql">SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a)) DAY AS Date
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS d;</code>
ログイン後にコピー

特定の日付範囲内の日付のリストを生成するには、WHERE 句を使用して日付をフィルターできます。

<code class="language-sql">SELECT a.Date
FROM (
    SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a)) DAY AS Date
    FROM ... -- 上述子查询
) a
WHERE a.Date BETWEEN '2010-01-20' AND '2010-01-24';</code>
ログイン後にコピー

このクエリは次の出力を返します:

<code>Date
----------
2010-01-24
2010-01-23
2010-01-22
2010-01-21
2010-01-20</code>
ログイン後にコピー

このメソッドのパフォーマンスは驚くほど優れており、100,000 個の日付を生成するのに 1 秒もかかりません。また、移植性も高く、ほとんどのデータベースと互換性があります。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート