【MySQL】日付型を別フォーマットで出力する

MySQL

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

実用例

サンプルに下記テーブルを用意しました。

idcreated_timetext
12019-02-01 23:12:28AAAAA
22019-02-02 19:25:04BBBBBB
32019-02-02 18:41:17CCCCC
42019-02-03 20:11:06DDDDD

日付ごとのレコード数を抽出したい場合に、今回紹介している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

 

コメント

タイトルとURLをコピーしました