详解mysql 获取某个时间段每一天、每一个小时的统计数据

获取每一天的统计数据

做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:18:36这个时间段内,统计出每一天的日志数据,一般情况下,看到这种需求都是考虑使用函数来搞定,直接上sql语句

SELECT
	DATE_FORMAT(trigger_time, '%Y-%m-%d') triggerDay,
	COUNT(id) triggerCount
FROM
	`job_qrtz_trigger_log`
WHERE
	trigger_time BETWEEN '2018-02-02 09:18:36'
AND '2018-03-05 23:18:36'
GROUP BY triggerDay
ORDER BY trigger_time;

查询结果:

对上面的sql做简单的解释

首先,查询字段这里,COUNT(id) triggerCount是我们需要的统计数据的条数,按照实际需求可以添加需要的字段。

DATE_FORMAT(trigger_time, '%Y-%m-%d') triggerDay

这个是将特定日期格式化成 YYYY-mm-dd 格式的日期。这里的格式用于后面的分组,所以按照不同的需求,可以自定义格式。

我的需求是获取每一天的日志数据,我就按照 年份-月份-日期 的格式进行分组然后通过count(*)得到。

如果获取某个月内每个月的数据量,就将格式改为

DATE_FORMAT(trigger_time, '%Y-%m')

当然,where条件需要能够匹配上格式,不能where条件限制到了日期,你却用月份分组。

mysql的日期输出格式列出来:

%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自带的HOUR函数处理

SELECT HOUR(trigger_time) as Hour,count(*) as Count
  FROM xxl_job_qrtz_trigger_log
  WHERE
	trigger_time BETWEEN '2018-02-05 01:18:36'
AND '2018-02-05 17:18:36'
  GROUP BY HOUR(trigger_time) ORDER BY Hour(trigger_time);

查询结果如下

以上所述是小编给大家介绍的mysql 获取某个时间段每一天、每一个小时的统计数据详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)

    Sqlserver 获取每组中的第一条记录 在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面.功能下面,从数据库的术语来说,就是查找出每组中的一条数据.下面我们要实现的就是在sqlserver中实现从每组中取出第一条数据. 例子 我们要从上面获得的有效数据为: 对应的sql语句如下所示: select * from t1 t where id = (select top 1 id from t1 where grp = t.grp o

  • 用mysql_fetch_array()获取当前行数据的方法详解

    同mysql_fetch_row()类似,函数mysql_fetch_array()也是获取结果集中当前行数据,并在调用后自动滑向下一行.其定义如下. 复制代码 代码如下: array mysql_fetch_array(int result, int [result_type]) 参数说明如下.(1)result:由函数mysql_query()或mysql_db_query()返回的结果标识,用来指定所要获取的数据的SQL语句类型.(2)result_type:用于指定结果集类型,可选,取值

  • mysql获取随机数据的方法

    1.order by rand()数据多了极慢,随机性非常好,适合非常小数据量的情况. 复制代码 代码如下: SELECT * FROM table_name AS r1 JOIN (SELECT (ROUND(RAND() * (SELECT ABS(MAX(id)-MIN(id)-$limit) FROM table_name))+(SELECT MIN(id) from table_name)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.i

  • PHP+mysql实现从数据库获取下拉树功能示例

    本文实例讲述了PHP+mysql实现从数据库获取下拉树功能.分享给大家供大家参考,具体如下: <?php include "config.php"; include "MySQL.php"; $db = new Mysql('test'); //几个简单的类,不用列出来大家也看得懂.就是实例化一个数据库连接而已. function RootMenu ($PID,$n){ global $arr,$db; $sql = "select * from m

  • mysql中获取一天、一周、一月时间数据的各种sql语句写法

    创建表: 复制代码 代码如下: create table if not exists t(   id int,   addTime datetime default '0000-00-00 00:00:00′) 添加两条初始数据: insert t values(1, '2012-07-12 21:00:00′);insert t values(2, '2012-07-22 21:00:00′); 一.当天或当日插入的数据: 1.传统对比判断:SELECT * FROM `t` WHERE DA

  • mysql 获取规定时间段内的统计数据

    mysql 获取规定时间段内的统计数据 按年统计 SELECT count(*), DATE_FORMAT(order_info.create_time, '%Y-%m-%d') AS count_by_date FROM order_info WHERE DATE_FORMAT(order_info.create_time, '%Y') = '2017' GROUP BY count_by_date ORDER BY NULL 按月统计 SELECT count(*), DATE_FORMAT

  • 详解mysql 获取某个时间段每一天、每一个小时的统计数据

    获取每一天的统计数据 做项目的时候需要统对项目日志做分析,其中有一个需求是获取某个给定的时间段内,每一天的日志数据,比如说要获取从2018-02-02 09:18:36到2018-03-05 23:18:36这个时间段内,统计出每一天的日志数据,一般情况下,看到这种需求都是考虑使用函数来搞定,直接上sql语句 SELECT DATE_FORMAT(trigger_time, '%Y-%m-%d') triggerDay, COUNT(id) triggerCount FROM `job_qrtz

  • 详解mysql 获取当前日期及格式化

    MySQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORMAT(date, format) 注: date:时间字段 format:日期格式 返回系统日期,输出 2009-12-25 14:38:59 select now(); 输出 09-12-25 select date_format(now(),'%y-%m-%d'); 根据format字符串格式化date值: %S, %s 两位数字形式的秒( 00,01, ..., 59) %I, %i 两位数字形

  • 详解 Mysql 事务和Mysql 日志

    事务特性 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节. 2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 .比如A向B转账,不可能A扣了钱,B却没收到. 3.隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰.比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账. 4.持久性(Durability):事务完成后,事务对数据库的所有更新

  • 详解Mysql 游标的用法及其作用

    [mysql游标的用法及作用] 例子: 当前有三张表A.B.C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中: 常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有2000多条数据, 难道要执行2000多次?显然是不现实的:最终找到写一个存储过程然后通过循环来更新C表, 然而存储过程中的写法用的就是游标的形式. [简介] 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制. ​ 游标充当指针的作用. ​ 尽管游标能

  • 实例详解mysql子查询

    子查询分类 按返回结果集分类 子查询按返回结果集的不同分为4种:表子查询,行子查询,列子查询和标量子查询. 表子查询:返回的结果集是一个行的集合,N行N列(N>=1).表子查询经常用于父查询的FROM子句中. 行子查询:返回的结果集是一个列的集合,一行N列(N>=1).行子查询可以用于福查询的FROM子句和WHERE子句中. 列子查询:返回的结果集是一个行的集合,N行一列(N>=1). 标量子查询:返回的结果集是一个标量集合,一行一列,也就是一个标量值.可以指定一个标量表达式的任何地方,

  • 详解MySQL中的数据类型和schema优化

    最近在学习MySQL优化方面的知识.本文就数据类型和schema方面的优化进行介绍. 1. 选择优化的数据类型 MySQL支持的数据类型有很多,而如何选择出正确的数据类型,对于性能是至关重要的.以下几个原则能够帮助确定数据类型: 更小的通常更好 应尽可能使用可以正确存储数据的最小数据类型,够用就好.这样将占用更少的磁盘.内存和缓存,而在处理时也会耗时更少. 简单就好 当两种数据类型都能胜任一个字段的存储工作时,选择简单的那一方,往往是最好的选择.例如整型和字符串,由于整型的操作代价要小于字符,所

  • 详解mysql 中的锁结构

    Mysql 支持3中锁结构 表级锁,开销小,加锁快,不会出现死锁,锁定的粒度大,冲突概率高,并发度最低 行级锁,开销小,加锁慢,会出现死锁,锁定粒度小,冲突概率最低,并发度最高 页面锁,开销和加锁处于表锁和行锁之间,会出现死锁,锁粒度基于表和行之间,并发一般 InnoDB锁问题 InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.  行级锁和表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题. InnoDB的行锁模式及加锁方法 Inn

  • 详解MySQL 8.0 之不可见索引

    言 MySQL 8.0 从第一版release 到现在已经走过了4个年头了,8.0版本在功能和代码上做了相当大的改进和重构.和DBA圈子里的朋友交流,大部分还是5.6 ,5.7的版本,少量的走的比较靠前采用了MySQL 8.0.为了紧追数据库发展的步伐,能够尽早享受技术红利,我们准备将MySQL 8.0引入到有赞的数据库体系. 落地之前 我们会对MySQL 8.0的新特性和功能,配置参数,升级方式,兼容性等等做一系列的学习和测试.以后陆陆续续会发布文章出来.本文算是MySQL 8.0新特性学习的

  • 详解 MySQL中count函数的正确使用方法

    1. 描述 在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数.主键id.字段,那么它们有什么区别?各自效率如何?我们应该使用哪种方式来获取表的行数呢? 当搞清楚count函数的运行原理后,相信上面几个问题的答案就会了然于胸. 2. 表结构 为了解决上述的问题,我创建了一张 user 表,它有两个字段:主键id和name,后者可以为null,建表语句如下. CRE

  • 详解mysql中explain的type

    导语: 很多情况下,有很多人用各种select语句查询到了他们想要的数据后,往往便以为工作圆满结束了. 这些事情往往发生在一些学生亦或刚入职场但之前又没有很好数据库基础的小白身上,但所谓闻道有先后,只要我们小白好好学习,天天向上,还是很靠谱的. 当一个sql查询语句被写出来之后,其实你的工作只完成了一小半,接下来更重要的工作是评估你自己写的sql的质量与效率.mysql为我们提供了很有用的辅助武器explain,它向我们展示了mysql接收到一条sql语句的执行计划.根据explain返回的结果

随机推荐