现实中我们会遇到统计报表。比如查询当月每一天的数据数量。。。等等之类的。以下内容就是有关这方面的咯。

首先要知道几个函数

mysql> select now();    //这个是显示的当前时间
+---------------------+
| now() |
+---------------------+
| 2016-12-09 18:39:57 |
+---------------------+
1 row in set mysql> select curdate();  //这个是当前日期
+------------+
| curdate() |
+------------+
| 2016-12-09 |
+------------+
1 row in set
mysql> select date(now());  //当前时间格式化为日期
+-------------+
| date(now()) |
+-------------+
| 2016-12-09 |
+-------------+
1 row in set mysql> select month(now());  //当前时间格式化为月份
+--------------+
| month(now()) |
+--------------+
| 12 |
+--------------+
1 row in set mysql> select year(now());  //当前时间格式化为年份
+-------------+
| year(now()) |
+-------------+
| 2016 |
+-------------+
1 row in set

以上都是简单的东西,以下主要用的是DATE_FORMAT函数

MySQL DATE_FORMAT()

DATE_FORMAT(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 位 DATA_SUB函数 定义和用法
DATE_SUB() 函数从日期减去指定的时间间隔。 语法
DATE_SUB(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。 type 参数可以是下列值: Type 值
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

更详细的参考W3cSchool:Date函数

例子1:查询一个表,从当前年份开始,向后退12年,每一年的数据量。(如果有的年份无数据就不会显示)

mysql> select count(*),DATE_FORMAT(a.article_time,'%Y') t from article a where DATE_FORMAT(a.article_time,'%Y') > DATE_FORMAT(DATE_SUB(now(),INTERVAL 12 YEAR),'%Y') group by t;
+----------+------+
| count(*) | t |
+----------+------+
| 1 | 2015 |
| 54 | 2016 |
+----------+------+
2 rows in set

例子2:查询一个表,在当前年份的每一个月数据量(如果无数据就不会显示)

mysql> select count(*),DATE_FORMAT(a.article_time,'%Y-%m') t from article a where DATE_FORMAT(a.article_time,'%Y') = DATE_FORMAT(now(),'%Y') group by t;
+----------+---------+
| count(*) | t |
+----------+---------+
| 1 | 2016-07 |
| 22 | 2016-08 |
| 26 | 2016-09 |
| 3 | 2016-10 |
| 1 | 2016-11 |
| 1 | 2016-12 |
+----------+---------+
6 rows in set

例子3:查询某个月的每一天的数据量。(如果没有数据就不会显示)

mysql> select count(*),DATE_FORMAT(a.article_time,'%Y-%m-%d') t from article a where DATE_FORMAT(a.article_time,'%Y-%m') = '2016-09' group by t;
+----------+------------+
| count(*) | t |
+----------+------------+
| 22 | 2016-09-03 |
| 2 | 2016-09-21 |
| 1 | 2016-09-22 |
| 1 | 2016-09-27 |
+----------+------------+
4 rows in set

MySQL时间段查询的更多相关文章

  1. MySQL时间段查询,无数据补0

    上一节提到分时间段统计,可是无数据的时候不显示,而此时我们需要让他显示0. 首先我们需要建一个时间表. CREATE TABLE `my_date` ( `date` date NOT NULL, P ...

  2. Mysql 如何查询两个时间段之间的数据?

    Mysql 如何查询两个时间段之间的数据?

  3. MySQL 慢查询日志分析及可视化结果

    MySQL 慢查询日志分析及可视化结果 MySQL 慢查询日志分析 pt-query-digest分析慢查询日志 pt-query-digest --report slow.log 报告最近半个小时的 ...

  4. 如何查找MySQL中查询慢的SQL语句

    如何查找MySQL中查询慢的SQL语句 更多 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow ...

  5. 23个MySQL常用查询语句

    23个MySQL常用查询语句 一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!> ...

  6. MySQL重构查询的方式

    在优化有问题的查询时,目标应该是找到一个更优的方法获得实际需要的结果--而不一定总要从MySQL获取一模一样的结果集.有时候可以查询转换一种写法让其返回一样的结果,但是性能更好.但也可以通过修改应用代 ...

  7. 如何查找MySQL中查询慢的SQL语句(转载)

    转载自https://www.cnblogs.com/qmfsun/p/4844472.html 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那 ...

  8. MySQL之查询性能优化(一)

    为什么查询速度会慢 通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段, ...

  9. mysql慢查询分析

    mysql慢查询分析 Posted: 29. 08. 2014 | Author: zdz | Category: mysql MySQL 慢查询日志分析 1. pt-query-digest分析慢查 ...

随机推荐

  1. spawn协程学习

    对于IO密集型的程序,一般比较高效的做法是选择异步来实现,因为使用异步的方法更容易写出高效的程序.然而使用异步的话,经验较少的人往往会使自己的程序结构变得很混乱,进而导致程序的可读性变差.记得有人说过 ...

  2. 在SQL语句中加入时间比较作为查询条件

    select * from 表名 where 列名 = ? and DATEDIFF(hh,时间列,'2016-08-22 15:05:59.000')<9

  3. Java Basic Exception

    异常处理经验小结之一:不要直接抛出InvocationTargetException  (转http://olylakers.iteye.com/blog/1137371) 在最近一段时间的工作中,积 ...

  4. Maven的依赖和传递性质

    1. 引入项目所需jar包 Maven项目直白的一大特点就是一般情况下不需要去自行下载jar包以及目标jar包的依赖包并导入,只需要在去Maven的中央仓库http://mvnrepository.c ...

  5. php 获取数组第一个元素 以及最后一个元素 && 最后一个元素的键名

    1. current() 函数返回数组中的当前元素的值. 每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素. end() - 将内部指针指向数组中 ...

  6. C# 获取计算机信息

    //C#获取当前计算机的系统信息 //系统标识符和版本号 string strSystem = Environment.OSVersion.ToString(); //获取映射到进程上下文的物理内存量 ...

  7. avalon的表单验证

    表单验证 avalon内置了强大的表单验证功能,它需要结合ms-duplex, ms-validate, ms-rules这个三个指令一起使用. ms-duplex负责监控每个表单元素的输入. ms- ...

  8. [原]关于flash GPU渲染的一些不完全测试(wmode,ie,chrome)

    关于flash GPU渲染的一些不完全测试(wmode,ie,chrome) 测试环境: 随意取一段优酷超清视频,在本地以网页最大化方式播放,分辨率约1080P左右. 观察不同wmode值下,flas ...

  9. 随手记一次利用webbowser控件打开网页后cookie读取与设置

    利用wininet.dll 组件读取cookie : [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError ...

  10. Python学习【第三篇】Python变量

    变量 声明变量 #!/usr/bin/env python name = "Bourbon" 上述代码声明了一个变量,变量名为:name,变量的值为:"Bourbon&q ...