在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>
此查詢透過組合五個子查詢 (t0-t4) 的值來建立一個虛擬表。每個子查詢產生一系列一位整數 (0-9)。然後使用 ADDDATE()
函數將這些整數連接起來形成日期。 WHERE
子句過濾日期以檢索指定範圍內的日期。
注意: 此解決方案適用於未來近 300 年內的日期範圍。
以上是如何在 MySQL SELECT 查詢中產生日期範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!