MySQL で日付をフォーマットされた文字列に変換する
日付型の値をデータベース側でフォーマットされた文字列に変換したい時ありますよね。
ここでは、よく使う例とともに、MySQL で日付をフォーマットされた文字列に変換する方法をご説明します。
DATE_FORMAT で日付をフォーマットされた文字列に変換する
MySQL で DATE や DATETIME 型の値をフォーマットされた文字列に変換するには DATE_FORMAT 関数が使えます。
DATE_FORMAT 関数の構文は次の通りです。
DATE_FORMAT(date, format)
format にはフォーマット指定子を使って、フォーマットを指定します。
よく使うフォーマット指定子には次のようなものがあり、format に組み合わせて指定できます。
指定子 | 説明 | 例 |
---|---|---|
%Y | 4 桁の年 | 2024 |
%y | 2 桁の年 | 24 |
%c | 月 | 0 ~ 12 |
%m | 2 桁の月 | 00 ~ 12 |
%e | 日 | 0 ~ 31 |
%d | 2 桁の日 | 00 ~ 31 |
%H | 24時制の時間 | 00 ~ 23 |
%h | 12時制の時間 | 01 ~ 12 |
%p | 午前・午後 | AM か PM |
%i | 分 | 00 ~ 59 |
%S, %s | 秒 | 00 ~ 59 |
%f | ミリ秒 | 000000 ~ 999999 |
%M | 月名 | January ~ December |
%b | 簡略月名 | Jan ~ Dec |
%W | 曜日名 | Sunday ~ Saturday |
%b | 簡略曜日名 | Sun ~ Sat |
%a | 12時制の時間・分・秒。 hh:mm:ss フォーマット | 21:40:13 |
%T | 24時制の時間・分・秒。 フォーマット | 21:40:13 |
フォーマット指定子以外の文字も format に含むことができます。
MySQL でよく使う日付変換のサンプルクエリー
DATE_FORMAT 関数を使って、日付をフォーマットされた文字列に変換してみます。
MySQL でよく使う日付変換のサンプルクエリーは以下の通りです。
SET @in_date = '2024-09-25 21:40:13';
SELECT DATE_FORMAT(@in_date, '%m/%d/%Y') AS 'MM/dd/yyyy', -- 09/25/2024
DATE_FORMAT(@in_date, '%m/%d/%y') AS 'MM/dd/yy', -- 09/25/24
DATE_FORMAT(@in_date, '%Y/%m/%d') AS 'yyyy/MM/dd', -- 2024/09/25
DATE_FORMAT(@in_date, '%y/%m/%d') AS 'yy/MM/dd', -- 24/09/25
DATE_FORMAT(@in_date, '%d/%m/%Y') AS 'dd/MM/yyyy', -- 25/09/2024
DATE_FORMAT(@in_date, '%Y%m%d') AS 'yyyyMMdd', -- 20240925
DATE_FORMAT(@in_date, '%H:%i:%s') AS 'HH:mm:ss', -- 21:40:13
DATE_FORMAT(@in_date, '%T') AS 'HH:mm:ss', -- 21:40:13
DATE_FORMAT(@in_date, '%r') AS 'hh:mm:ss AM or PM', -- 09:40:13 PM
DATE_FORMAT(@in_date, '%Y%m%d%H%i%s') AS 'yyyyMMddHHmmss', -- 20240925214013
DATE_FORMAT(@in_date, '%Y/%m/%d %T') AS 'yyyy/MM/dd HH:mm:ss', -- 2024/09/25 21:40:13
DATE_FORMAT(@in_date, '%Y年%m月%d日 %H時%i分%s秒') AS '日時'; -- 2024年09月25日 21時40分13秒
'%Y年%m月%d日 %H時%i分%s秒' のように format に日本語も入れて変換できて便利ですね。
以上、MySQL で日付をフォーマットされた文字列に変換する方法をご説明しました。