您正在使用 IPV4 [3.238.79.169] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
悟空收录网       [公益]保护绿色环境,构建和谐社会      

【腾讯云】 爆款2核2G3M云服务器首年 61元,叠加红包再享折上折      
[公益] 地球是我家,绿化靠大家      
2024年 清明节 007
2024年 劳动节 034
2025年 元 旦 279
2025年 春 节 307
 
您现在的位置:首页 >> 数据库 >> 内容
本类新增
本类热门
详解Mysql日期格式并聚合统计示例
内容摘要: 在开始之前,我们需要先准备一张测试数据表,并插入一些数据,以便于我们后续的实验和测试。CREATETABLE`test`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(50)DEFAULTNULL,`created_at`datetimeNOTNULL,PRIMARYKEY(`id`))ENGINE=InnoD......
在开始之前,我们需要先准备一张测试数据表,并插入一些数据,以便于我们后续的实验和测试。

CREATETABLE`test`(

`id`int(11)NOTNULLAUTO_INCREMENT,

`name`varchar(50)DEFAULTNULL,

`created_at`datetimeNOTNULL,

PRIMARYKEY(`id`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;

INSERTINTO`test`(`name`,`created_at`)VALUES

('test1','2022-01-0100:00:00'),

('test2','2022-01-0200:00:00'),

('test3','2022-01-0212:00:00'),

('test4','2022-01-0300:00:00'),

('test5','2022-01-0700:00:00'),

('test6','2022-01-0800:00:00'),

('test7','2022-01-0900:00:00'),

('test8','2022-01-1000:00:00'),

('test9','2022-01-1400:00:00'),

('test10','2022-01-1500:00:00'),

('test11','2022-01-1600:00:00'),

('test12','2022-01-1700:00:00'),

('test13','2022-02-0100:00:00'),

('test14','2022-02-0200:00:00'),

('test15','2022-02-0300:00:00'),

('test16','2022-03-0100:00:00'),

('test17','2022-03-0200:00:00'),

('test18','2022-03-0300:00:00'),

('test19','2022-04-0100:00:00'),

('test20','2022-04-0200:00:00'),

('test21','2022-04-0300:00:00'),

('test22','2022-05-0100:00:00'),

('test23','2022-05-0200:00:00'),

('test24','2022-05-0300:00:00');

这里我们创建了一张名为test的测试表,包含三个字段id、name和created_at。其中created_at表示记录创建时间的日期时间类型字段。我们插入了一些测试数据,包括从2022年1月份到5月份的数据.

实现原理

当我们需要根据日期进行分组统计时,MySQL提供了很多内置的日期函数,如YEAR()、MONTH()、WEEK()、DAY()、HOUR()等等。这些函数能够根据日期对数据进行分组并统计相应的数量。

对于本需求,我们需要根据日期进行分组,并统计7天、4周和3个月的数据。因此,我们需要结合使用日期格式化和日期函数。

首先,我们需要将日期格式化成相应的格式。可以使用DATE_FORMAT()函数来实现,该函数接收两个参数:日期和格式化字符串。例如,我们可以将日期格式化成"yyyy-MM-dd"的格式,如下所示:

SELECTDATE_FORMAT(date_column,'%Y-%m-%d')ASformatted_dateFROMtable_name;

实际操作

按天统计

接下来,我们需要根据日期分组并统计数量。可以使用GROUPBY子句和相应的日期函数来实现。例如,我们可以根据日期分组统计每天的数量,如下所示:

SELECTDATE_FORMAT(date_column,'%Y-%m-%d')ASformatted_date,COUNT(*)AScountFROMtable_nameGROUPBYformatted_date;

按周统计SELECTDATE_FORMAT(date_column,'%x-%v')ASformatted_week,COUNT(*)AScountFROMtable_nameGROUPBYformatted_week;

或者

SELECTCONCAT(YEAR(date_column),'-',WEEK(date_column))ASformatted_week,COUNT(*)AScountFROMtable_nameGROUPBYformatted_week;`

按月统计SELECTDATE_FORMAT(date_column,'%Y-%m-%d')ASformatted_month,COUNT(*)AScountFROMtable_nameGROUPBYformatted_month;

或者

SELECTCONCAT(YEAR(date_column),'-',MONTH(date_column))ASformatted_month,COUNT(*)AScountFROMtable_nameGROUPBYformatted_month;

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:Mysql修改字段类型、长度及添加删除列实例代码

 

下一篇:MySQL导入导出.sql文件及常用命令小结

发布日期:2023/4/24
手机扫二维码直达本页
发布时间:12:51:51
点  击:9
录  入:齐天大圣
相关文章
Baidu
YiJiaCMS 7.3.8 build231228(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....