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
 
  
コメント