目次

日付フォーマット備忘録

さて、本題へ。

下記のような datetime 型のカラムを参照した SELECT 文があります。

SELECT hoge_date FROM hogehoge;

+---------------------+
| 2015-10-01 07:00:00 |
| 2015-10-02 18:00:00 |
+---------------------+

DATE_FORMAT 関数で年月日のみを取得するフォーマットを指定して参照してみます。

下記のパターンは年月日をハイフン区切りにしたものです。

mysql> SELECT DATE_FORMAT(hoge_date, '%Y-%m-%d') AS tmp_date FROM hogehoge;

+------------+
| 2015-10-01 |
| 2015-10-02 |
+------------+

年月指定にすると下記の通り。

mysql> SELECT DATE_FORMAT(hoge_date, '%Y-%m') AS tmp_date FROM hogehoge;

+---------+
| 2015-10 |
| 2015-10 |
+---------+

今度は年月日を区切り文字なしで連結したもの。

用途に合わせてフォーマットを簡単に変更できるのはいいですね。

mysql> SELECT DATE_FORMAT(hoge_date, '%Y%m%d') AS tmp_date FROM hogehoge;

+----------+
| 20151001 |
| 20151002 |
+----------+

mysql> SELECT DATE_FORMAT(hoge_date, '%Y%m%d%H') AS tmp_date FROM hogehoge;

+------------+
| 2015100107 |
| 2015100218 |
+------------+

年月単位でグルーピング化することで、同じ月のカウントや同じ月の別カラムの合計値など、日付フォーマットを揃えることでそのような集計にも使えます。

mysql> SELECT DATE_FORMAT(hoge_date, '%Y-%m') AS tmp_date, COUNT(*) AS tmp_count FROM hogehoge GROUP BY DATE_FORMAT(hoge_date, '%Y-%m');

+---------+---+
| 2015-10 | 2 |
+---------+---+

Tips記事一覧

新着記事一覧です。

関連記事一覧

「MySQLのdatetime型のカラムから日付部分のみを取得する」に関連した記事一覧です。