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

一時テーブルや変数を使用せずに、MySQL でデータレポート用の日付を効率的に生成するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-17 11:21:24
オリジナル
660 人が閲覧しました

How Can I Efficiently Generate Dates in MySQL for Data Reporting Without Using Temporary Tables or Variables?

データ レポートのための効率的な日付生成

MySQL では、指定された範囲内で一連の日付を生成することは、包括的なデータ レポートを作成するために不可欠です。一般的なアプローチの 1 つは、多数の日付を含むテーブルを作成することですが、これは効率的な解決策ではありません。

この問題に対処するには、一時テーブルの作成または変数の設定が制限されているシナリオを検討してください。今年など、特定の期間内の日付を生成するには、次の MySQL クエリが効果的な解決策を提供します。

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'
ログイン後にコピー

このクエリは、さまざまな値 (0 ~ 9) を組み合わせて、ネストされた一連のサブクエリを使用します。 1970 年 1 月 1 日から 2017 年 12 月 31 日までの日付を作成します。次に、adddate() 関数を使用して、これらの日付を目的の日付にシフトします。

このアプローチを利用すると、一時テーブルや変数の割り当てを必要とせずに、データのレポートと分析用に一連の日付を効率的に生成できます。

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

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