MySql按时,天,周,月进行数据统计


Posted in MySQL onAugust 14, 2022

前言

最近遇到一个统计的需求场景,针对db中的数据,看一下每天的数据量情况,由于DB中时间字段采用的是int存的时间戳,所以最开始想到的是直接对时间进行按天取整,然后再Group统计数据;

除此之外,使用DATE_FORMAT函数来处理可能是更简洁的方法了,下面分别介绍下两种方式

1. 时间取整方式

假设现在有一个user表,其中create_time 为 int类型的时间戳,此时我们需要统计每天的新增用户数,第一种方式就是将create_time转换为天为单位的整数,然后group分组之后计数即可

对应的sql如下;

select floor(create_time / 86400) as c, count(*) from `user` group by c

使用上面这种方式虽然可以统计出结果,但是显示并不友好,如上面这个c实际上是距离标准起始时间过去的天数;无法直观看到每天的数量情况

2. data_format方式

接下来再介绍一下根据日期格式化这个函数来实现数据统计

函数说明

这个函数通常接收两个参数,使用姿势形如

DATE_FORMAT(date,format)
  • date: 日期
  • format: 规定日期/时间的输出格式

注意上面的date,要求是日期格式,可我们现在的数据是int类型,怎么整?

先通过from_unixtime函数来转换为日期,然后再使用data_format来格式化分组,这样就可行了

比如按天统计的sql可以如下:

select date_format(from_unixtime(create_time), '%Y-%m-%d') today, count(*) as cnt from user group by today

返回结果形如:

today cnt
2022-07-02 6
2022-07-03 4
2022-07-04 4
2022-07-05 3
2022-07-06 2
2022-07-07 1

如果需要按周统计,也很方便,将format改成 %Y-%u

select date_format(from_unixtime(create_time), '%Y-%u') today, count(*) as cnt from user group by today

返回结果形如:

today cnt
2022-22 27
2022-23 52
2022-24 28
2022-25 33
2022-26 39
2022-27 10

同样按年统计,则将format改成%Y即可

下面给出format对应的取值说明:

格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位

到此这篇关于MySql按时,天,周,月进行数据统计的文章就介绍到这了,更多相关MySql数据统计内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
数据库连接池
Apr 06 MySQL
MySQL pt-slave-restart工具的使用简介
Apr 07 MySQL
MySQL 慢查询日志深入理解
Apr 22 MySQL
jdbc使用PreparedStatement批量插入数据的方法
Apr 27 MySQL
MySQL REVOKE实现删除用户权限
Jun 18 MySQL
MySQL修改默认引擎和字符集详情
Sep 25 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
MySQL窗口函数的具体使用
Nov 17 MySQL
mysql sum(if())和count(if())的用法说明
Jan 18 MySQL
教你使用VS Code的MySQL扩展管理数据库的方法
Jan 22 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
mysql性能优化以及配置连接参数设置
May 06 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 #MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 #MySQL
MySQL数据库查询之多表查询总结
Aug 05 #MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 #MySQL
MySQL存储过程及语法详解
Aug 05 #MySQL
MySQL自定义函数及触发器
Aug 05 #MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 #MySQL
You might like
谈谈PHP语法(3)
2006/10/09 PHP
php 无法载入mysql扩展
2010/03/12 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
php strftime函数的详细用法
2018/06/21 PHP
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
JS简单实现动画弹出层效果
2015/05/05 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
[03:01]2014DOTA2国际邀请赛 小组赛7月13日TOPPLAY
2014/07/14 DOTA
Python高级特性 切片 迭代解析
2019/08/23 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
建筑设计所实习生自我鉴定
2013/09/25 职场文书
商务英语本科生的自我评价分享
2013/11/15 职场文书
工程班组长岗位职责
2013/12/30 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
投标担保书范文
2014/04/02 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
给老婆的检讨书1000字
2015/01/01 职场文书
2015年销售助理工作总结
2015/05/11 职场文书
寒假致家长的一封信
2015/10/10 职场文书
聊聊redis-dump工具安装问题
2022/01/18 Redis
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技