MySQL时间段查询
现实中我们会遇到统计报表。比如查询当月每一天的数据数量。。。等等之类的。以下内容就是有关这方面的咯。
首先要知道几个函数
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时间段查询的更多相关文章
- MySQL时间段查询,无数据补0
上一节提到分时间段统计,可是无数据的时候不显示,而此时我们需要让他显示0. 首先我们需要建一个时间表. CREATE TABLE `my_date` ( `date` date NOT NULL, P ...
- Mysql 如何查询两个时间段之间的数据?
Mysql 如何查询两个时间段之间的数据?
- MySQL 慢查询日志分析及可视化结果
MySQL 慢查询日志分析及可视化结果 MySQL 慢查询日志分析 pt-query-digest分析慢查询日志 pt-query-digest --report slow.log 报告最近半个小时的 ...
- 如何查找MySQL中查询慢的SQL语句
如何查找MySQL中查询慢的SQL语句 更多 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow ...
- 23个MySQL常用查询语句
23个MySQL常用查询语句 一查询数值型数据: SELECT * FROM tb_name WHERE sum > 100; 查询谓词:>,=,<,<>,!=,!> ...
- MySQL重构查询的方式
在优化有问题的查询时,目标应该是找到一个更优的方法获得实际需要的结果--而不一定总要从MySQL获取一模一样的结果集.有时候可以查询转换一种写法让其返回一样的结果,但是性能更好.但也可以通过修改应用代 ...
- 如何查找MySQL中查询慢的SQL语句(转载)
转载自https://www.cnblogs.com/qmfsun/p/4844472.html 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那 ...
- MySQL之查询性能优化(一)
为什么查询速度会慢 通常来说,查询的生命周期大致可以按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段, ...
- mysql慢查询分析
mysql慢查询分析 Posted: 29. 08. 2014 | Author: zdz | Category: mysql MySQL 慢查询日志分析 1. pt-query-digest分析慢查 ...
随机推荐
- 一起来做webgame,《Javascript蜘蛛纸牌》
不得不说,做游戏是会上瘾的,这次带来的是win系统上的经典游戏<蜘蛛纸牌>,不能完美,但求一玩 移牌 0 次 Javascript game_蜘蛛纸牌 正在努力加载... // " ...
- jiajianhao
#include<stdio.h> int map[4][4]={ 0,1,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0}; int flag=0; int minci=9 ...
- Android--Activity(活动)
1. 安卓中的 Activity 大致等于桌面应用中的window 2. Activity 的生命周期由系统控制, 所以在开发时要假设 Activity 会被随时销毁掉的情况, 比如: 应用中有一个 ...
- iscroll 加载不全解决方案
例如上图中,get_kaijiang 中如果执行一段ajax跨域传输的话 function get_kaijiang(){ ajax------- $('#div').append(html); -- ...
- CXF Spring开发WebService,基于SOAP和REST方式 【转】
官网示例 http://cxf.apache.org/docs/writing-a-service-with-spring.html http://cxf.apache.org/docs/jax-rs ...
- Google Supersonic列存储查询库的介绍、安装、测试
查询引擎库介绍: http://www.infoq.com/cn/news/2012/10/Google-Supersonic/ Supersonic是一个面向列存储数据库的查询引擎库,它提供了一组数 ...
- php常用关键字
1.final关键字 <?php //final关键字修饰的类 是最终的类不能被继承 class demo{ //final关键字修饰的成员方法 是最终版本的方法不能被重写 final publ ...
- Win8电脑蓝屏并提示dpc_watchdog_violation
用尽系统自带的工具均无法恢复,F8能进系统.后来使用如下方法解决了 这种错误情况的发生可能是由于 iastor.sys 驱动没有完全兼容 Windows 8系统所造成的. 微软正在研究一种可行方案,来 ...
- Spring操作指南-IoC基础环境配置(基于注解手动装配)
Source: http://code.taobao.org/p/LearningJavaEE/src/LearningSpring002%20-%20Wiring%20beans%20with%20 ...
- visual studio 2015 + Cordova 开发环境搭建
简单的写一些,备忘,太折腾了,特别是通过代理上网的我们国内的开发者 1.当然是安装Visual Studio 2015,别忘了选择Tools For Apache Cordova. 对于通过Proxy ...