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