MySQL是一個廣泛使用的數據庫管理系統,它能夠處理各種類型的數據。在日常使用中,經常需要按照特定的時間格式對數據進行訪問和操作。本文將介紹如何使用MySQL按小時循環一天的方法。
CREATE TABLE `example` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date_time` datetime NOT NULL, `value` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
首先,我們需要創建一個包含日期時間和值的表。代碼如上所示。
SET @start = '2021-10-01 00:00:00'; SET @end = '2021-10-01 23:59:59'; SELECT DATE_FORMAT(time_slots, '%H:%i') AS time_slot, COALESCE(SUM(value), 0) AS value_sum FROM ( SELECT @start + INTERVAL (a.hour + (10 * b.hour)) HOUR AS time_slots FROM ( SELECT 0 AS hour UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) AS a CROSS JOIN ( SELECT 0 AS hour UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 ) AS b ) AS time_slots LEFT JOIN example ON time_slots = DATE_FORMAT(date_time, '%Y-%m-%d %H:%i:%s') AND date_time BETWEEN @start AND @end GROUP BY time_slot;
接下來,我們將設置起始和結束時間,并使用SELECT語句循環小時數。代碼如上所示。
利用LEFT JOIN將數據表與時間表進行連接,并使用DATE_FORMAT函數將數據表中的日期時間格式化成小時。這樣,我們可以按小時聚合數據,以得到每個小時的值總和。最后,使用GROUP BY子句按小時分組。
使用MySQL按小時循環一天非常簡單。通過使用日期時間和LEFT JOIN將時間表和數據表進行連接,我們可以輕松地獲得每個小時的值總和。
上一篇css按鈕兩邊留邊距