服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySql按时,天,周,月进行数据统计

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

2022-08-14 19:58一灰灰​​​​​​​ Mysql

这篇文章主要介绍了MySql按时,天,周,月进行数据统计,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

前言

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

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

1. 时间取整方式

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

对应的sql如下;

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

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

2. data_format方式

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

函数说明

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

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

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

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

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

?
1
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

?
1
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数据统计内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7131369167961358350

延伸 · 阅读

精彩推荐
  • MysqlMYSQL无法连接 提示10055错误的解决方法

    MYSQL无法连接 提示10055错误的解决方法

    这篇文章主要介绍了MYSQL无法连接 提示10055错误的解决方法,需要的朋友可以参考下...

    服务器之家3142020-07-04
  • MysqlMYSQL 浅谈MyISAM 存储引擎

    MYSQL 浅谈MyISAM 存储引擎

    mysql中用的最多存储引擎就是innodb和myisam。做为Mysql的默认存储引擎,myisam值得我们学习一下,以下是我对《高性能MYSQL》书中提到的myisam的理解,请大家多多...

    MYSQL教程网2202019-12-01
  • Mysqlmysql常用备份命令和shell备份脚本分享

    mysql常用备份命令和shell备份脚本分享

    这篇文章主要介绍了mysql常用备份命令和shell备份脚本,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下...

    挑战者V6532021-02-04
  • MysqlWindows下简单的Mysql备份BAT脚本分享

    Windows下简单的Mysql备份BAT脚本分享

    朋友说在windows下面用bat命令备份失败,他一时找不到问题所在,于是找我帮忙查看下。查找后解决了该问题,想着总结下来,所以这篇文章主要跟大家分享...

    不争2312020-07-20
  • Mysql用批处理实现自动备份和清理mysql数据库的代码

    用批处理实现自动备份和清理mysql数据库的代码

    有网友问我在win2003下如何自动备份MySQL数据库,既然是自动备份,那肯定得写脚本,当然我们也可以利用软件实现 ...

    MYSQL教程网4652020-01-09
  • MysqlMySQL外键级联的实现

    MySQL外键级联的实现

    本文主要介绍了MySQL外键级联的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来...

    wu_zhiyuan9772022-07-28
  • MysqlMySQL中表索引定义的方法与介绍

    MySQL中表索引定义的方法与介绍

    这篇文章主要给大家介绍了关于MySQL中表索引定义的方法与介绍,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需...

    Owen5232020-12-09
  • MysqlMySQL定时备份数据库(全库备份)的实现

    MySQL定时备份数据库(全库备份)的实现

    本文主要介绍了MySQL定时备份数据库(全库备份)的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    letcafe10952021-11-17