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

首先要知道几个函数

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. nginx服务器配置

    nginx主要配置 #定义Nginx运行的用户和用户组user www www; #每个worker进程绑定到指定CPU ,均衡各CPU 负载worker_cpu_affinity 000000000 ...

  2. 网页语言有html,php.jsp,无论什么语言浏览器总是能正常显示,这个解析工作是浏览器完成的吗?

    不是,浏览器最基本的语言是html也就是说浏览器只看得懂html.css.js等其他的服务器端动态脚本,比如你说的php.jsp等,解析工作是在服务器完成的!打个比方,你在电脑显示屏上看到的一切东西, ...

  3. vs2015启动网站调试提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。 解决方法

    今天安装了vs2015 下载一个项目进行试用,启动调试的时候提示 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容. 最可能的原因: 没有为请求的 URL ...

  4. centos 查看版本(转)

    # lsb_release -aLSB Version:    :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch ...

  5. 升级到macOS 10.12 mysqlb报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

    系统升级到macOS 10.12后启动mysql后,在终端输入mysql 报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' ...

  6. An error occurred while processing an SVN command

    今天在使用SmartSVN的时候,遇到这个问题,反复几次,也没有得到解决,而且进入了死循环,一直在提示这个消息,即使在cleanup之后. 百度了一番之后,找到了解决办法: 把出错的文件在本地删除掉, ...

  7. tomcat底层原理实现

    1.首先完成一个server类,用来接收客户端的请求:代码都在一个while(true)循环中,模拟tomcat一直在启动,其中绑定一个端口,用来监听一个端口,然后创建一个输入流,获取请求的输入流,然 ...

  8. LeetCode Paint House II

    原题链接在这里:https://leetcode.com/problems/paint-house-ii/ 题目: There are a row of n houses, each house ca ...

  9. myeclipse,eclipse控制台输出乱码问题

    首先我描述一下问题,我在做udp socket编程(一个聊天的程序)的时候,从控制台中读取中文,然后再向控制台中打印,出现中文乱码的情况. 1.出现乱码最根本的原因就是编码和解码不一致的情况.问题分析 ...

  10. Java提高篇——设计模式

    设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软 ...