在MySQL 中使用INTERVAL 和CURDATE 來簡化基於時間的查詢
在MySQL 中處理基於時間的資料時,經常會遇到到這樣的情況:需要處理日期範圍或特定時間間隔。 INTERVAL 和 CURDATE 函數提供了強大的方法來簡化和自訂查詢。
例如,如果您需要檢索特定時間範圍內的數據,可以使用以下語法:
<code class="sql">WHERE v.date > DATE_SUB(CURDATE(), INTERVAL num MONTH) AND v.date < CURDATE()
將「num」替換為您想要傳回的月數。這將動態調整您的查詢以檢索指定月份的數據,同時避免需要為每個月編寫多個查詢。
在提供的範例中,您想要檢索每個月的資料。為此,您可以使用循環遍歷月份:
<code class="sql">FOR i IN REVERSE (1..12) LOOP SELECT s.GSP_nom, DATE_ADD(CURDATE(), INTERVAL - MONTH(i)) AS month, AVG((v.vote + v.prix) / 2) AS avg FROM votes_serveur v JOIN serveur s ON v.idServ = s.idServ WHERE v.date > DATE_ADD(CURDATE(), INTERVAL - MONTH(i)) AND v.date < DATE_ADD(CURDATE(), INTERVAL - MONTH(i-1)) GROUP BY s.GSP_nom ORDER BY avg DESC; END LOOP;</code>
此循環將為之前 12 個月的每個月份產生一個查詢,從而在單次執行中為您提供所需的資料。透過利用 INTERVAL 和 CURDATE,您可以簡化複雜的基於時間的查詢,減少對重複程式碼的需求並提高資料庫操作的效率。
以上是如何使用 INTERVAL 和 CURDATE 簡化 MySQL 中基於時間的查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!