ホームページ > データベース > mysql チュートリアル > MySQL SELECT クエリで日付範囲を生成するにはどうすればよいですか?

MySQL SELECT クエリで日付範囲を生成するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-19 01:16:09
オリジナル
247 人が閲覧しました

How to Generate a Date Range in a MySQL SELECT Query?

MySQL SELECT クエリで日付範囲を生成する

この記事では、指定した日付範囲内の日付リストを生成する方法について説明します。たとえば、開始日が「2012-02-10」、終了日が「2012-02-15」の場合、次の結果が得られます:

<code>日期      
----------
2012-02-10
2012-02-11
2012-02-12
2012-02-13
2012-02-14
2012-02-15 </code>
ログイン後にコピー

解決策

これを実現するには、次のクエリを使用できます:

<code class="language-sql">SELECT * FROM 
(SELECT ADDDATE('1970-01-01',t4.i*10000 + t3.i*1000 + t2.i*100 + t1.i*10 + t0.i) selected_date FROM
 (SELECT 0 i 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 i 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 i 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 i 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 i 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 selected_date BETWEEN '2012-02-10' AND '2012-02-15'</code>
ログイン後にコピー

このクエリは、5 つのサブクエリ (t0 ~ t4) の値を組み合わせて仮想テーブルを作成します。各サブクエリは、1 桁の整数 (0 ~ 9) のシーケンスを生成します。これらの整数は、ADDDATE() 関数を使用して連結されて日付が形成されます。 WHERE 句は日付をフィルタリングして、指定された範囲内の日付を取得します。

注: このソリューションは、ほぼ 300 年先の日付範囲に対して機能します。

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

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