MySQL で日付をフォーマットされた文字列に変換する

日付型の値をデータベース側でフォーマットされた文字列に変換したい時ありますよね。

ここでは、よく使う例とともに、MySQL で日付をフォーマットされた文字列に変換する方法をご説明します。

DATE_FORMAT で日付をフォーマットされた文字列に変換する

MySQL で DATE や DATETIME 型の値をフォーマットされた文字列に変換するには DATE_FORMAT 関数が使えます。

DATE_FORMAT 関数の構文は次の通りです。

DATE_FORMAT(date, format)

format にはフォーマット指定子を使って、フォーマットを指定します。

よく使うフォーマット指定子には次のようなものがあり、format に組み合わせて指定できます。

指定子説明
%Y4 桁の年2024
%y2 桁の年24
%c0 ~ 12
%m2 桁の月00 ~ 12
%e0 ~ 31
%d2 桁の日00 ~ 31
%H24時制の時間00 ~ 23
%h12時制の時間01 ~ 12
%p午前・午後AM か PM
%i00 ~ 59
%S, %s00 ~ 59
%fミリ秒000000 ~ 999999
%M月名January ~ December
%b簡略月名Jan ~ Dec
%W曜日名Sunday ~ Saturday
%b簡略曜日名Sun ~ Sat
%a12時制の時間・分・秒。 hh:mm:ss フォーマット21:40:13
%T24時制の時間・分・秒。 フォーマット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秒

MySQL で日付をフォーマットされた文字列に変換する 1

'%Y年%m月%d日 %H時%i分%s秒' のように format に日本語も入れて変換できて便利ですね。


以上、MySQL で日付をフォーマットされた文字列に変換する方法をご説明しました。

© 2024 MySQL 入門