【mysql】日時データのDATE_FORMATを使って成形する方法| プロサバメモ

WEBプログラミングやサーバ設定などのメモ場

【mysql】日時データのDATE_FORMATを使って成形する方法

2022.03.20

DATE_FORMATを使用すると、日時データを様々な形式で成形することができます。

目次

1. はじめに

サンプルでは、NOW()関数で取得したdatetime(日時)を成形して表示してみます。

SELECT NOW() 
NOW()
2022-03-20 18:34:42

2. DATE_FORM()の使い方

DATE_FORMATは、以下の様に使います。

DATE_FORMAT( 日時, フォーマット )

日時は、datetimeまたは、dateを指定します。

フォーマットは以下の書式を組み合わせて作成します。

2-1. フォーマット

書式 意味 表示形式
%Y 西暦4桁(例:2000,2022)
%y 西暦の下2桁(例:00,22)
%c 1~12
%m 01~12
%e 1~31
%d 01~31
%k 0~23
%H 00~23
%i 00~59
%s 00~59
%w 曜日 0~6
(0:日、1:月、2:火、3:水、4:木、5:金、6:土)

3. 使用例

dateを年月日付きにする。

SELECT DATE_FORMAT( '2022-03-22', '%Y年%m月%d日' ) 
DATE_FORMAT( '2022-03-22', '%Y年%m月%d日' )
2022年03月22日

datetimeを年月日時分秒付きにする。

SELECT DATE_FORMAT( '2022-03-22 19:00:00', '%Y年%m月%d日 %H時%i分%s秒' ) 
DATE_FORMAT( '2022-03-22 19:00:00', '%Y年%m月%d日 %H時%i分%s秒' )
2022年03月22日 19時00分00秒

NOW関数で取得したdatetimeを指定したフォーマットで成形する。

SELECT DATE_FORMAT( NOW(), '%Y年%m月%d日 %H時%i分%s秒' ) 
DATE_FORMAT( NOW(), '%Y%m%d' )
2022年03月22日 19時11分04秒

4. まとめ

サンプルでは、文字列のdateやdatetimeの成形、NOW関数で取得したdatetimeを成形するだけでしたが、dateもしくはdatetimeカラムのデータに対してみ使用できるので、集計等で使い道があると思います。

例えば、datetime型のカラムに対して、年毎に集計をかけてみる。

SELECT
    DATE_FORMAT( datetime_column, '%Y' ),
    count(*)
FROM
    hoge
GROUP BY
    DATE_FORMAT( datetime_column, '%Y' )
ORDER BY
    DATE_FORMAT( datetime_column, '%Y' )
などなど

関連記事

TOP