首頁 >資料庫 >mysql教程 >如何在 MySQL SELECT 查詢中產生日期範圍?

如何在 MySQL SELECT 查詢中產生日期範圍?

Barbara Streisand
Barbara Streisand原創
2025-01-19 01:16:09249瀏覽

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>

此查詢透過組合五個子查詢 (t0-t4) 的值來建立一個虛擬表。每個子查詢產生一系列一位整數 (0-9)。然後使用 ADDDATE() 函數將這些整數連接起來形成日期。 WHERE 子句過濾日期以檢索指定範圍內的日期。

注意: 此解決方案適用於未來近 300 年內的日期範圍。

以上是如何在 MySQL SELECT 查詢中產生日期範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn