SQL道場 日付時刻関数 DATE_FORMAT関数

SQLで日付を整形するDATE_FORMAT関数について記載しています。

対応データベース:MySQL

DATE_FORMAT関数の文法

SELECT DATE_FORMAT(日付,書式) FROM テーブル
SELECT DATE_FORMAT(dates, formatting) FROM table
引数
Arguments
日付
Date
文字列型
String type
書式
Format
文字列型
String type
返値
return value
文字型 整形後の日付が戻ります。
Returns the date after formatting the character type.

DATE_FORMAT関数は指定された日付と時刻を指定された書式で整形した後、文字列で戻します。指定する書式は文字列なのでシングルクォート「’」で囲みます。時間の部分のみを整形する場合はTIME_FORMAT関数を使います。

MySQLの日付要素

書式
Format
意味
Meaning
%M英語の月名(January、December)
English month name (January, December)
%W英語の曜日(Sunday、Saturday)
English day of the week (Sunday, Saturday)
%D英語の序数付き日(0th、1st、2nd、・・)
English ordinal day (0th, 1st, 2nd…)
%Y4桁の年
four-digit year
%y2桁の年
double-digit year
%X週の年。週の最初の日は日曜日。4桁の数値。%Vと共に使用
Year of the week. The first day of the week is Sunday. A four-digit number. Used with% V
%x週の年。週の最初の日は月曜日。4桁の数値。%vと共に使用
Year of the week. The first day of the week is Monday. A four-digit number. Used with% v
%a英語の曜日の省略形(Sun、Sat・・・)
English abbreviation for day of the week (Sun, Sat・・・)
%d日(00..31)
Day(00..31)
%e日(0..31)
Day(0..31)
%m月(00..12)
Month(00..12)
%c月(0..12)
Month(0..12)
%b英語の月名の省略形(Jan..Dec)
English month abbreviation (Jan… Dec)
%j年始からの日数(001..366)
Days since New Year (001.. 366)
%H24時間表現の時間(00..23)
24 hour time (00… 23)
%k24時間表現の時間(0..23)
24 hour time (0.. 23)
%h or %I12時間表現の時間(01..12)
12 hour time (01.. 12)
書式
Format
意味
Meaning
%h or %I12時間表現の時間(01..12)
12 hour time (01.. 12)
%l12時間表現の時間(1..12)
12 hour time (1.. 12)
%i分、数値(00..59)
minutes, number (00… 59)
%r12時間表現の時刻(hh:mm:ss[AP]M)
Time in 12 hour format (hh: mm: ss [AP] M)
%T24時間表現の時刻(hh:mm:ss)
24 hour time (hh: mm: ss)
%S or %s秒(00..59)
Seconds (00… 59)
%pAM or PM
%w曜日(0=Sunday..6=Saturday)
Day of week (0=Sunday… 6=Saturday)
%U週の始まりを日曜とした場合の年間の通算週(00..53)
the week of the year (00… 53) if the week starts on Sunday
%u週の始まりを月曜とした場合の年間の通算週(00..53)
Week of the year when the week starts on Monday (00… 53)
%V週の始まりを日曜とした場合の年間の通算週(01..53)’%X’と共に使用
Week of the year if the week starts on Sunday (01.. 53)
%v週の始まりを月曜とした場合の年間の通算週(01..53)’%x’と共に使用
Week of the year when the week starts on Monday (01.. 53)
%%‘%’の文字自身
Character itself in ‘%’

実行例

MySQLの実行例

日付の形式を「年/月/日」の形式に整形

/* MySQL 2023年1月15日を2023/01/15の形式にするサンプル */
SELECT DATE_FORMAT('2023-12-31','%Y/%m/%d');
DATE_FORMAT関数サンプル実行結果

現在日時の形式を「年/月/日」の形式に整形

/* MySQL 現在日時を年/月/日の形式にするサンプル */
SELECT DATE_FORMAT(CURRENT_TIMESTAMP,'%Y/%m/%d');
DATE_FORMAT関数サンプル実行結果

現在日時の形式を「年/月/日 時:分:秒」の形式に整形

/* MySQL 現在日時を年/月/日 時:分:秒の形式にするサンプル */
SELECT DATE_FORMAT(CURRENT_TIMESTAMP,'%Y/%m/%d %T');
DATE_FORMAT関数サンプル実行結果

現在日時の形式を「年月日 時分秒」の形式に整形

/* MySQL 現在日時を「年月日 時分秒」の形式にするサンプル */
SELECT DATE_FORMAT(CURRENT_TIMESTAMP,'%Y年%m月%d日 %H時%i分%s秒');
DATE_FORMAT関数サンプル実行結果

現在日時の形式を「年月日」の形式に整形

/* MySQL 現在日時を「年月日」の形式にするサンプル */
SELECT DATE_FORMAT(CURRENT_TIMESTAMP,'%Y%m%d');
DATE_FORMAT関数サンプル実行結果

現在日時の形式を日が曜日、月が英語名形式に整形

/* MySQL 現在日時を日が曜日、月が英語名形式にするサンプル */
SELECT DATE_FORMAT(CURRENT_TIMESTAMP,'%W %M %Y');
DATE_FORMAT関数サンプル実行結果