MySQLはクエリの日付を年月ごとにアーカイブします
4246 ワード
【知識準備】
1.使用したMySQL日付関数:
関数#カンスウ#
機能
DATE_FORMAT(date, fnt)
文字列fmtでフォーマットされた日付date値を返します
2.使用したMySQLの日付と時刻のフォーマット:
書式
フォーマットの説明
%Y
4桁の数字で表示される年、例えば2016、2017、2018...(注意Yは大文字)
%m
2桁の数字は、01、02、03などの月を表しています.(注意mは小文字)
例:現在時刻を年月日形式に変更(現在時刻は2016年3月15日23:03:03)
この例では、データベース・テーブルの構造を示します.
この例のデータベース・テーブル・データ:
【例】
1.データベース・テーブルの_create_timeフィールドは年月降順にアーカイブされる.
2.アーカイブ時にフォーマット上の修飾をすることもできます.
3.クエリー_create_timeの2016年3月のデータ;
1.使用したMySQL日付関数:
関数#カンスウ#
機能
DATE_FORMAT(date, fnt)
文字列fmtでフォーマットされた日付date値を返します
2.使用したMySQLの日付と時刻のフォーマット:
書式
フォーマットの説明
%Y
4桁の数字で表示される年、例えば2016、2017、2018...(注意Yは大文字)
%m
2桁の数字は、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> 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)