前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【MySQL 系列】MySQL 按照当前年月周日统计数据

【MySQL 系列】MySQL 按照当前年月周日统计数据

作者头像
框架师
发布2022-09-02 11:45:44
2.5K0
发布2022-09-02 11:45:44
举报
文章被收录于专栏:墨白的Java基地

前言:

接了一个小需求,获取用电统计的数据,要求获取最近月,周,天统计数据,MySQL 本来就包含处理这种需求的函数,这里记录下。

  • 查询当天数据
代码语言:javascript
复制
SELECT * FROM 表名 WHERE TO_DAYS( 表中时间字段 ) = TO_DAYS(NOW());
  • 查询本周数据
代码语言:javascript
复制
SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT( 表中时间字段,'%Y-%m-%d')) = YEARWEEK(NOW());
  • 查询当月数据
代码语言:javascript
复制
SELECT * FROM 表名 WHERE YEARWEEK(DATE_FORMAT( 表中时间字段,'%Y-%m')) = DATE_FORMAT(CURDATE(),'%Y-%m');
  • 查询最近一周数据
代码语言:javascript
复制
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(),INTERVAL 1 WEEK) <= DATE( 表中时间字段 );

中间的 1 是一周的意思,2 周就填写 2

  • 查询最近一月内数据
代码语言:javascript
复制
SELECT * FROM 表名 WHERE DATE_SUB(CURDATE(),INTERVAL 1 MONTH) <= DATE( 表中时间字段 );
  • 查询当年每月的统计数据
代码语言:javascript
复制
SELECT MONTH('表中日期字段'), COUNT(*) FROM '表名' WHERE YEAR(CURDATE()) GROUP BY MONTH('表中日期字段');

PS:在复制 SQL 的时候需要注意,Mybatis 无法解析 <= | >= 这样的符号,需要使用 <![CDATA[ <=]]> 包裹。 不然会报:org.xml.sax.SAXParseException: 元素内容必须由格式正确的字符数据或标记组成(具体可以看下这篇文章: 传送门

  • 统计某年每个月的数据量
代码语言:javascript
复制
SELECT MONTH( 日期字段 ),COUNT( 1 ) FROM 表名 WHERE YEAR ( 日期字段 ) = 查询年份  GROUP BY MONTH ( 日期字段 );

其他统计 SQL

  • 查询本年度数据
代码语言:javascript
复制
SELECT *  FROM 表名  WHERE YEAR ( FROM_UNIXTIME( 日期字段 ) ) = YEAR (curdate( ));
  • 查询数据附带季度数
代码语言:javascript
复制
SELECT *, QUARTER ( FROM_UNIXTIME( ` 日期字段 ` ) )  FROM 表名 ;
  • 查询本季度的数据
代码语言:javascript
复制
SELECT * FROM 表名 WHERE quarter( FROM_UNIXTIME( 日期字段 ) ) = quarter(curdate( ));
  • 查询 7 天的数据
代码语言:javascript
复制
SELECT * FROM 表名 WHERE DATE_SUB( CURDATE(), INTERVAL 7 DAY ) <= date( 日期字段 );
  • 查询本周统计
代码语言:javascript
复制
SELECT *  FROM 表名  WHERE MONTH ( 日期字段 ) = MONTH (curdate()) AND WEEK ( 日期字段 ) = WEEK (curdate());
  • 统计每天数据总量
代码语言:javascript
复制
SELECT count(*) FROM 表名  GROUP BY date( 日期字段 );

下面的内容不重要,没地方写了所以就记录在这里吧!

非日期统计查询

  • 查询表的数据量大小
代码语言:javascript
复制
SELECT TABLE_NAME,( data_length + index_length )/ 1024 / 1024 AS TABLE_MB,
TABLE_ROWS 
FROM
	information_schema.`TABLES` 
WHERE
	TABLE_SCHEMA = 'database_name';
  • 查询阻塞语句
代码语言:javascript
复制
SELECT
	r.trx_id waiting_trx_id,
	r.trx_mysql_thread_Id waiting_thread,
	r.trx_query waiting_query,
	b.trx_id blocking_trx_id,
	b.trx_mysql_thread_id blocking_thread,
	b.trx_query blocking_query 
FROM
	information_schema.innodb_lock_waits w
	INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id
	INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
  • 统计数据库访问量前 10 的 IP 地址
代码语言:javascript
复制
SELECT
	SUBSTRING_INDEX( HOST, ':', 1 ) AS ip,
	COUNT(*) 
FROM
	information_schema.PROCESSLIST 
GROUP BY
	ip 
ORDER BY
	COUNT(*) DESC 
	LIMIT 10;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 其他统计 SQL
  • 非日期统计查询
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档