ホームページ >データベース >mysql チュートリアル >一時テーブルや変数を使用せずに MySQL で日付シリーズを生成するにはどうすればよいですか?

一時テーブルや変数を使用せずに MySQL で日付シリーズを生成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-11 01:54:10426ブラウズ

How to Generate a Date Series in MySQL Without Temporary Tables or Variables?

一時テーブルや変数を使用しない一連の日付の生成

MySQL レポート用に特定の範囲内の一連の日付を生成しようとする場合、最適なアプローチが重要です。これは、一時テーブルの作成と変数設定が禁止されている場合に特に当てはまります。

効果的な解決策の 1 つは、サブクエリとユニオン演算を組み合わせて使用​​することです。次のクエリについて考えてみましょう:

select * from
(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date
from
(select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where gen_date between '2017-01-01' and '2017-12-31'

このクエリは、複数のサブクエリの結果を結合することによって、'2017-01-01' から '2017-12-31' までの一連の日付を生成します。サブクエリは 0 から 9 までの数値のテーブルを作成し、adddate() 関数を使用して日付を構築するために使用します。最後の where 句は、指定された範囲内の日付のみを含むように結果をフィルターします。

このメソッドを利用すると、一時テーブルや変数を必要とせずに一連の日付を効率的に生成できるため、次のような状況に適しています。制限された権限。

以上が一時テーブルや変数を使用せずに MySQL で日付シリーズを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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