MySQL 的日期範圍產生:一種實用方法
MySQL 缺少與 PostgreSQL 的 generate_series()
直接等效的函數。 然而,我們可以使用 SQL 和變數巧妙地產生日期範圍。當您需要在沒有預先存在的日曆表的情況下建立日期範圍時,此方法特別有用。
讓我們用一個例子來說明。 想像一張銷售表:
date | qty |
---|---|
2011-01-01 | 3 |
2011-01-01 | 4 |
2011-04-01 | 2 |
2011-06-01 | 5 |
我們的目標是擴展此功能以顯示 2011 年全年的每日銷售額:
date | qty |
---|---|
2011-01-01 | 7 |
2011-01-02 | 0 |
2011-01-03 | 0 |
2011-04-01 | 2 |
...and so on... |
以下是我們實現這一目標的方法:
<code class="language-sql">SELECT DATE_FORMAT(ADDDATE('2011-01-01', @num := @num + 1), '%Y-%m-%d') AS date FROM any_table, (SELECT @num := -1) AS num LIMIT 365;</code>
此查詢使用 any_table
(任何現有表都可以)作為佔位符以確保查詢運行。 @num
變數初始化為 -1,隨著每行遞增,產生從「2011-01-01」開始的連續日期。 LIMIT 365
將輸出限制為非閏年;使用 LIMIT 366
表示閏年。 DATE_FORMAT
函數確保日期格式一致。
該技術為在 MySQL 中產生日期範圍提供了靈活且高效的解決方案,簡化了基於日期的查詢和分析。
以上是如何在沒有 `generate_series()` 的情況下在 MySQL 中產生日期範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!