【知识准备】 1. 使用到的 MySQL 日期函数:
函数 | 功能 |
DATE_FORMAT(date, fnt) | 返回按字符串 fmt 格式化的日期 date 值 |
2. 使用到的 MySQL 的日期和时间格式:
格式符 | 格式说明 |
%Y | 四位数字表示的年份,如:2016、2017、2018...(注意 Y 为大写) |
%m | 两位数字表示的月份,如:01、02、03...(注意 m 为小写) |
例:将当前时间转为年月格式(当前时间为 2016年3月15日23:03:03)
mysql> select DATE_FORMAT(NOW(), '%Y%m');
-- 将当前时间转为年月格式
+----------------------------+
| DATE_FORMAT(NOW(), '%Y%m') |
+----------------------------+
| 201603|
+----------------------------+
1 row in set (0.00 sec)
本例中数据库表结构:
mysql> desc blog.blog_article;
+-------------------+--------------+------+-----+---------+----------------+
| Field| Type| Null | Key | Default | Extra|
+-------------------+--------------+------+-----+---------+----------------+
| _id| int(11)| NO| PRI | NULL| auto_increment |
| _content| text| NO|| NULL||
| _create_time| datetime| YES|| NULL||
| _is_allow_comment | bit(1)| YES|| b'1'||
| _is_delete| bit(1)| YES|| b'0'||
| _order| int(11)| YES|| NULL||
| _title| varchar(255) | NO|| NULL||
| _author| int(11)| YES| MUL | NULL||
+-------------------+--------------+------+-----+---------+----------------+
8 rows in set (0.03 sec)
【MySQL 将查询的日期按年月归档】
本例中数据库表数据:
mysql> select * from blog.blog_article \G;
*************************** 1. row ***************************
_id: 1
_content: 这是文章一。
_create_time: 2016-01-03 13:26:57
_is_allow_comment:
_is_delete:
_order: 0
_title: 文章一
_author: 1
*************************** 2. row ***************************
_id: 2
_content: 这是文章二。
_create_time: 2016-03-11 19:40:06
_is_allow_comment:
_is_delete:
_order: 0
_title: 文章二
_author: 1
*************************** 3. row ***************************
_id: 3
_content: 这是文章三。
_create_time: 2016-03-15 20:12:50
_is_allow_comment:
_is_delete:
_order: 0
_title: 文章三
_author: 1
3 rows in set (0.00 sec)
【实例】 1. 将数据库表中的 _create_time 字段按年月降序归档;
mysql> select distinct DATE_FORMAT(a._create_time, '%Y%m') from blog.blog_article as a order by a._create_time DESC;
+-------------------------------------+
| DATE_FORMAT(a._create_time, '%Y%m') |
+-------------------------------------+
| 201603|
| 201601|
+-------------------------------------+
2 rows in set (0.00 sec)
2. 归档时也可以做一点儿格式上的修饰;
mysql> select distinct DATE_FORMAT(a._create_time, '%Y年%m月') from blog.blog_article as a order by a._create_time DESC;
+-------------------------------------------+
| DATE_FORMAT(a._create_time, '%Y年%m月')|
+-------------------------------------------+
| 2016年03月|
| 2016年01月|
+-------------------------------------------+
2 rows in set (0.00 sec)
3. 查询 _create_time 在 2016 年 3 月份的数据;
mysql> select * from blog.blog_article as a where DATE_FORMAT(a._create_time, '%Y%m') = '201603' \G;
*************************** 1. row ***************************
_id: 2
_content: 这是文章二。
_create_time: 2016-03-11 19:40:06
_is_allow_comment:
_is_delete:
_order: 0
_title: 文章二
_author: 1
*************************** 2. row ***************************
_id: 3
_content: 这是文章三。
_create_time: 2016-03-15 20:12:50
_is_allow_comment:
_is_delete:
_order: 0
_title: 文章三
_author: 1
2 rows in set (0.00 sec)
推荐阅读
- mysql|InnoDB数据页结构
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- mysql|一文深入理解mysql
- Java毕业设计项目实战篇|Java项目:在线嘿嘿网盘系统设计和实现(java+Springboot+ssm+mysql+maven)
- SQL|SQL基本功(五)--函数、谓词、CASE表达式
- vue|电商后台管理系统(vue+python|node.js)
- Java及基础算法及数据结构|旧笔记整理(MySQL)
- mysql|双非本211硕,无实习无项目,自学大数据开发,秋招上岸
- 数据库|Mysql--InnoDB存储引擎详解
- MySQL学习笔记-9-order by