在MySQL中,經常需要對時間段內的數據進行匯總。其中,固定間隔匯總是一種常見的需求,比如每天、每周、每月等。
SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS date, COUNT(*) AS cnt FROM table WHERE create_time BETWEEN '2021-07-01' AND '2021-07-31' GROUP BY date;
上述代碼是一個簡單的按天匯總的例子。其中,DATE_FORMAT函數將datetime類型的時間轉換為日期格式,然后按日期分組統計數量。
如果需要按周匯總,則可以使用WEEK函數來將日期轉換為周數:
SELECT CONCAT(YEAR(create_time), '-W', WEEK(create_time)) AS week, COUNT(*) AS cnt FROM table WHERE create_time BETWEEN '2021-07-01' AND '2021-07-31' GROUP BY week;
同理,按月匯總則可使用MONTH函數:
SELECT DATE_FORMAT(create_time, '%Y-%m') AS month, COUNT(*) AS cnt FROM table WHERE create_time BETWEEN '2021-07-01' AND '2021-07-31' GROUP BY month;
需要注意的是,按照固定間隔匯總時,時間范圍的選擇非常重要。例如,如果按周匯總,時間范圍應該是每個周的起始日期至結束日期,而不是隨意選擇一個月中的日期范圍。