参考:Mysql 查询一天中,每个小时数据的数量 作者:刘宇LY
- 给出数据
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `test`;
/*Table structure for table `time` */
DROP TABLE IF EXISTS `time`;
CREATE TABLE `time` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`p_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
/*Data for the table `time` */
insert into `time`(`id`,`p_date`) values
(1,'2020-08-29 00:10:10'),
(2,'2020-08-29 01:10:10'),
(3,'2020-08-29 01:10:10'),
(4,'2020-08-29 02:10:10'),
(5,'2020-08-30 02:10:10'),
(6,'2020-08-30 19:10:10');
实现的sql语句
SELECT HOUR(e.p_date) AS 小时,COUNT(*) AS 记录数
FROM `time` e
WHERE e.`p_date` LIKE '2020-08-30%'
GROUP BY HOUR(e.p_date) ORDER BY HOUR(e.p_date);
- 结果
- HOUR(时间)的作用
- 如果日期改为29号
- 如果不加日期限制,把where条件删除
- 注意点:
- 为什么不能这样显示:具体某一天,对应24小时各有多少记录数作为三列显示
- 因为如果按天来分组,一天的24小时将被挤扁了。而如果按小时分组还想看到天作为一列,某一天会被撕成24份。
- 如图
- 如果没有日期条件得到的是按小时来分析的数据(可以用来查看高峰期是什么时候)
- 如果日期(年月日)和时间(时分秒)分开作为两列,sql类似