MySQL 统计天、周、月、年数量
原创
©著作权归作者所有:来自51CTO博客作者风华浪浪的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、场景描述:
在工作中我们常常需要按照天、周、月、年统计一些信息,或计算同比环比、或利用ECharts数据展示、或利用Pandas 数据分析等等
二、基本方案
将数据库中带时间点的信息,通常为creat_time
、update_time
字段,利用date_format转换日期格式后,然后再用group by分组查询
三、示例查询
select date_format(create_time,'%Y-%m-%d') as date, count(*) as total from fans_user group by date order by date desc;
select date_format(create_time,'%Y-%m-%d') as date, count(*) as total from fans_user group by date order by date desc limit 30;
select week(create_time) as weeks, count(*) as total from fans_user group by weeks order by weeks desc
select month(create_time) as months, count(*) as total from fans_user group by months order by months desc
select year(create_time) as years, count(*) as total from fans_user group by years order by years desc
四、补充
如果查询某天的fans数量
select * from fans_user where date_format(create_time, '%Y-%m-%d') = '2020-09-10'
- 错误写法,数据量大时非常慢,花费的时间是上面的5倍
select * from fans_user where create_time between '2020-09-10 00:00:00' AND '2020-09-10 23:59:59'