MySQL でも日付型のデータを各種フォーマット変換を行って表示することがよくあります。
今回はその変換を行う DATE_FORMAT 関数の使い方について説明します。
DATE_FORMAT 関数は以下の様な引数をとります。
■[DATE_FORMAT]の引数について
DATE_FORMAT(date_data, format_string)
-- date_data : 変換を行う日付データ
-- format_string : 変換指定文字列('%Y', '%m', '%d' ... などの文字列)
DATE_FORMAT 関数を使った簡単な例のSQLを以下に示します。
MariaDB [(none)]> SELECT DATE_FORMAT(NOW(), '%Y/%m/%d'); +--------------------------------+ | DATE_FORMAT(NOW(), '%Y/%m/%d') | +--------------------------------+ | 2024/01/17 | +--------------------------------+ 1 row in set (0.48 sec)
変換指定文字列として利用できるものは以下の指定子があります。
| 指定子 | 説明 |
|---|---|
| %a | 簡略曜日名 (Sun..Sat) |
| %b | 簡略月名 (Jan..Dec) |
| %c | 月、数字 (0..12) |
| %D | 英語のサフィクスを持つ日付 (0th, 1st, 2nd, 3rd, …) |
| %d | 日、数字 (00..31) |
| %e | 日、数字 (0..31) |
| %f | マイクロ秒 (000000..999999) |
| %H | 時間 (00..23) |
| %h | 時間 (01..12) |
| %I | 時間 (01..12) |
| %i | 分、数字 (00..59) |
| %j | 年間通算日 (001..366) |
| %k | 時 (0..23) |
| %l | 時 (1..12) |
| %M | 月名 (January..December) |
| %m | 月、数字 (00..12) |
| %p | AM または PM |
| %r | 時間、12 時間単位 (hh:mm:ss に AM または PM が続く) |
| %S | 秒数 (0059) |
| %s | 秒数 (0059) |
| %T | 時間、24 時間単位 (hh:mm:ss) |
| %U | 週 (00..53)、日曜日が週の初日、WEEK() モード 0 |
| %u | 週 (00..53)、月曜日が週の初日、WEEK() モード 1 |
| %V | 週 (01..53)、日曜日が週の初日、WEEK() モード 2、%X とともに使用 |
| %v | 週 (01..53)、月曜日が週の初日、WEEK() モード 3、%x とともに使用 |
| %W | 曜日名 (Sunday..Saturday) |
| %w | 曜日 (0=Sunday..6=Saturday) |
| %X | 年間の週、日曜日が週の初日、数字、4 桁、%V とともに使用 |
| %x | 年間の週、月曜日が週の初日、数字、4 桁、%v とともに使用 |
| %Y | 年、数字、4 桁 |
| %y | 年、数字 (2 桁) |
| %% | リテラル % 文字 |
| %x | x (上記にないすべての 「x」) |
いろんな指定子があるのですが、通常使うのは年月日の指定子と24時制の時刻の指定子ぐらいでしょうか。 そこで以下に例を示します。
MariaDB [(none)]> SELECT
-> DATE_FORMAT(NOW(), '%Y/%m/%d') as 'YYYY/mm/dd'
-> ,DATE_FORMAT(NOW(), '%y/%m/%d') as 'yy/mm/dd'
-> ,DATE_FORMAT(NOW(), '%H:%i:%s') as 'HH:MM:SS'
-> ,DATE_FORMAT(NOW(), '%Y年%m月%d日') as 'YYYY年mm月dd日'
-> ,DATE_FORMAT(NOW(), '%H%時%i%分%s%秒') as 'HH時MM分SS秒'
-> ;
+------------+----------+----------+----------------+--------------+
| YYYY/mm/dd | yy/mm/dd | HH:MM:SS | YYYY年mm月dd日 | HH時MM分SS秒 |
+------------+----------+----------+----------------+--------------+
| 2024/01/17 | 24/01/17 | 18:26:01 | 2024年01月17日 | 18時26分01秒 |
+------------+----------+----------+----------------+--------------+
1 row in set (0.00 sec)
PR
コメント