MySQLで日付型は、yyyy-MM-dd等のフォーマットで保存されています。
別のフォーマットで出力したい場合に使える出力方法を紹介します。
実行例
DATE_FORMATという関数を利用します。
-- %Y:年(4桁) %m:月(0埋め) %d:日(0埋め)
select DATE_FORMAT('2019-01-01 23:59:59', '%Y-%m-%d') -- 2019-01-01
-- %H:時間(0埋めの24時間) %i:分 %S:秒
SELECT DATE_FORMAT('2019-01-01 01:01:01', '%H:%i:%S') -- 01:01:01
-- %h:時間(0埋めの12時間)
SELECT DATE_FORMAT('2019-01-01 23:59:59', '%h:%i:%S') -- 11:01:01
SELECT DATE_FORMAT('2019-01-01 01:01:01', '%h:%i:%S') -- 01:01:01
実用例
サンプルに下記テーブルを用意しました。
id | created_time | text |
---|---|---|
1 | 2019-02-01 23:12:28 | AAAAA |
2 | 2019-02-02 19:25:04 | BBBBBB |
3 | 2019-02-02 18:41:17 | CCCCC |
4 | 2019-02-03 20:11:06 | DDDDD |
日付ごとのレコード数を抽出したい場合に、今回紹介しているDATE_FORMATを利用して日付ごとのレコード数をカウントしていきます。
SELECT DATE_FORMAT(created_time,'%Y-%m-%d') as Ymd , count(id) as count
FROM table_a
group by DATE_FORMAT(created_time,'%Y-%m-%d');
上記クエリを実行することで下記の結果が得られます。
Ymd count
----------------------------
2019-02-01 1
2019-02-02 2
2019-02-03 1
補足
指定できる日付フォーマットには以下のようなものがあります。
記号 | 意味 | 例 |
---|---|---|
%Y | 年(西暦4桁) | 2019 |
%y | 年(西暦2桁) | 19 |
%m | 月(ゼロ埋め) | 01~12 |
%c | 月(ゼロ無し) | 1~12 |
%M | 月(英字) | January~December |
%b | 月(省略英字) | Jan~Dec |
%d | 日(ゼロ埋め) | 01~31 |
%e | 日(ゼロ無し) | 1~31 |
%I | 時(12時間/ゼロ無) | 1~12 |
%k | 時(24時間/ゼロ無) | 0~23 |
%h | 時(12時間/ゼロ有) | 01~12 |
%H | 時(24時間/ゼロ有) | 00~23 |
%i | 分(ゼロあり) | 00~59 |
%s | 秒(ゼロあり) | 00~59 |
%f | マイクロ秒 | 000000 |
%M | 曜日(英字) | Sunday~Saturday |
%a | 曜日(省略英字) | Sun~Sat |
%w | 曜日(数字) | 0(日曜)~6(土曜) |
%j | 年間の通算日数 | 0~365 |
%p | 午前/午後 | AM/PM |
コメント