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';SELECTDATE_FORMAT(time_slots, '%H:%i') AS time_slot,COALESCE(SUM(value), 0) AS value_sumFROM (SELECT @start + INTERVAL (a.hour + (10 * b.hour)) HOUR AS time_slotsFROM (SELECT 0 AS hour UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS aCROSS 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_slotsLEFT JOIN example ON time_slots = DATE_FORMAT(date_time, '%Y-%m-%d %H:%i:%s')AND date_time BETWEEN @start AND @endGROUP BY time_slot;
接下来,我们将设置起始和结束时间,并使用SELECT语句循环小时数。代码如上所示。
利用LEFT JOIN将数据表与时间表进行连接,并使用DATE_FORMAT函数将数据表中的日期时间格式化成小时。这样,我们可以按小时聚合数据,以得到每个小时的值总和。最后,使用GROUP BY子句按小时分组。
使用MySQL按小时循环一天非常简单。通过使用日期时间和LEFT JOIN将时间表和数据表进行连接,我们可以轻松地获得每个小时的值总和。