GROUP BY "half an hour" in MySQL

今天忽然有這需求, google 了 "group by half hour" 還真的有人問一樣的問題, 不過沒啥好解答。自己試出還過得去的解法, 就順手記一下吧。

假設表格 record 有個欄位 created_time, 型別為 timestamp。若要統計 2010-02-10 一整天每半小時產生的的資料量, SQL 可以這麼寫:
SELECT HOUR(created_time) AS h, FLOOR(MINUTE(created_time) / 30) AS v, COUNT(*) FROM record WHERE AND created_time >= '2010-02-10' AND created_time < FROM_DAYS(TO_DAYS('2010-02-10') + 1) GROUP BY h, v;
MySQL 有許多計算時間的函式, 像 hour 會取出小時, 但沒有取出半小時或「每十分鐘」的函式。但可以自己用分鐘除以 30, 再套 FLOOR (下界) 將時間轉為 0, 1。

留言

這個網誌中的熱門文章

(C/C++ ) 如何在 Linux 上使用自行編譯的第三方函式庫

熟悉系統工具好處多多

virtualbox 使用 USB 裝置