MySQL按时间统计数据的方法介绍(代码示例)
技术百科
不言
发布时间:2019-02-01
浏览: 次
本篇文章给大家带来的内容是关于MySQL按时间统计数据的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
在做数据库的统计时,经常会需要根据年、月、日来统计数据,然后配合echarts来制作可视化效果。
数据库:MySQL(推荐教程:MySQL教程)
思路
按照时间维度进行统计的前提是需要数据库中有保留时间信息,建议是使用
MySQL自带的datetime类型来记录时间。
`timestamp` datetime DEFAULT NULL,
在MySQL中对于时间日期的处理的函数主要是
DATE_FORMAT(date,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 位 |
注:当涉及到按日统计是,需要使用%j,而如果使用%d, %e, %w的话,那么不同月份/周里的相同值会统计在一起。
涉及到获取当前时间,则可以通过
now()或者sysdate()来获取。
SELECT SYSDATE() FROM DUAL; SELECT NOW() FROM DUAL;
按照实际需求使用
group by查询即可。
结论
需统计的表结构如下:
CREATE TABLE `apilog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(64) DEFAULT NULL, `action` varchar(64) DEFAULT NULL, `params` text, `result` text, `timestamp` datetime DEFAULT NULL, PRIMARY KEY (`id`) )
-
统计时间范围内不同分类
action的数量# 当日 SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%j') = DATE_FORMAT(n
ow(),'%j') ORDER BY count desc;
# 当周
SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%u') = DATE_FORMAT(now(),'%u') ORDER BY count desc;
# 当月
SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%m') = DATE_FORMAT(now(),'%m') ORDER BY count desc;
# 当年
SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%Y') = DATE_FORMAT(now(),'%Y') ORDER BY count desc; -
统计某分类
action的时间维度数量# 按日 SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%j') # 按周 SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%u') # 按月 SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%m') # 按年 SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%Y')
同时按
action和时间维度统计# 按日 SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%j') # 按周 SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%u') # 按月 SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%m') # 按年 SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%Y')
以上就是比较常用的时间统计了,更多的时间维度,可以参考上面的参数表类似处理即可。
# 有一定
# 涉及到
# 英文
# 对你
# 按月
# 中有
# 一是
# format
# 数据库
# mysql
# date
# 按年
# 按日
# echarts
# 星期日
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11怎么开启窗口对齐助手_Windows11
- 如何使用正则表达式精确匹配最多含一个换行符的 st
- Windows 10怎么录屏_Windows 10
- Win11如何隐藏桌面图标 Win11一键隐藏/显
- Win11怎么设置默认PDF阅读器 Win11修改
- Avalonia如何实现跨窗口通信 Avaloni
- 零基础学会Python自动化办公_高效处理Exce
- 如何在 Laravel 中通过嵌套关联关系进行 o
- 如何优化Golang Web性能_Golang H
- Python字符串处理进阶_切片方法解析【指导】
- Mac如何解压zip和rar文件?(推荐免费工具)
- Win11怎么查看硬盘型号_Windows 11检
- Windows蓝屏错误0x0000001E怎么修复
- Mac自带的词典App怎么用_Mac添加和使用多语
- phpstudy本地环境mysql忘记密码_重置m
- Win10怎么卸载剪映_Win10彻底卸载剪映方法
- Win10系统更新错误0x80240034怎么办
- ACF 教程:正确更新嵌套在多层 Group 字段
- Python大文件处理策略_内存优化说明【指导】
- php485返回空数组怎么回事_php485数据接
- Windows10如何更改开机密码_Win10登录
- php订单日志怎么记录物流_php记录订单物流变更
- Win11怎么设置任务栏图标大小_Windows1
- Win11声音忽大忽小怎么办 Win11音频增强功
- C++中的协变与逆变是什么?C++函数指针与返回类
- MAC如何快速搜索大文件_MAC磁盘空间分析与冗余
- 如何在 Windows 11 中使用 AlomWa
- Python数据挖掘进阶教程_分类回归与聚类案例解
- windows 10应用商店区域怎么改_windo
- Win11怎么打开旧版计算器_Win11恢复传统计
- 如何在 Go 中可靠地测试含 time.Time
- Win11怎么卸载Photos应用_Win11卸载
- 如何使用Golang实现路由参数绑定_使用Mux和
- Win11无法安装软件怎么办_Win11解除应用安
- Win10如何卸载Skype_Win10卸载Sky
- c++的位运算怎么用 与、或、异或、移位操作详解【
- C++中的std::shared_from_thi
- 如何在Golang中写入JSON文件_保存结构体数
- 如何使用Golang捕获并记录协程panic_保证
- 如何在Golang中优化文件读写性能_使用缓冲和并
- 如何自定义Windows终端的默认配置文件?(Po
- 如何使用Golang模拟请求超时_Golang c
- Mac如何将HEIC图片格式转为JPG_Mac批量
- 跨文件调用类方法怎么用_php作用域操作符与自动加
- c++输入输出流 c++ cin与cout格式化输
- Win11怎么退出高对比度模式_Win11取消反色
- 如何使用Golang理解结构体指针方法接收者_Go
- c++如何判断文件是否存在_c++ filesys
- Win11怎么看电池循环次数_Win11笔记本电池
- php打包exe后无法读取环境变量_变量配置方法【

ow(),'%j') ORDER BY count desc;
# 当周
SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%u') = DATE_FORMAT(now(),'%u') ORDER BY count desc;
# 当月
SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%m') = DATE_FORMAT(now(),'%m') ORDER BY count desc;
# 当年
SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%Y') = DATE_FORMAT(now(),'%Y') ORDER BY count desc;
QQ客服