【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' )
などなど