當尋求為MySQL 報告產生特定範圍內的一系列日期時,最佳方法至關重要。這在禁止臨時表建立和變數設定的情況下尤其重要。
一個有效的解決方案是採用子查詢和聯合操作的組合。考慮以下查詢:
select * from (select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date from (select 0 t0 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 t1 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 t2 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 t3 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 t4 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 gen_date between '2017-01-01' and '2017-12-31'
此查詢透過組合多個子查詢的結果產生「2017-01-01」和「2017-12-31」之間的一系列日期。子查詢建立一個從 0 到 9 的數字表,然後使用 adddate() 函數使用這些數字來建構日期。最後的 where 子句過濾結果,只包含指定範圍內的日期。
透過使用此方法,您可以有效地產生一系列日期,而不需要臨時表或變量,適合以下情況:權限受限。
以上是如何在沒有臨時表或變數的情況下在 MySQL 中產生日期系列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!