SQL道場 日付時刻関数 TIME_FORMAT関数
SQLで時刻を整形するTIME_FORMAT関数について記載しています。
対応データベース:MySQL
TIME_FORMAT関数の文法
SELECT TIME_FORMAT(日付,書式) FROM テーブル
SELECT TIME_FORMAT(dates, formatting) FROM table| 引数 Arguments | 日付 Date | 文字列型 String type |
| 書式 Format | 文字列型 String type | |
| 返値 return value | 文字型 整形後の時刻が戻ります。 Returns the time after character formatting. |
TIME_FORMAT関数は指定された日付と時刻のうち時刻の部分のみを指定された書式で整形した後に文字列で戻します。指定する書式は文字列なので「’」(シングルクォート)で囲みます。時間の部分のみだけではなく、日付と時刻を整形する場合はDATE_FORMAT関数を使います。
これは DATE_FORMAT() 関数と同様に使用されますが、format 文字列には時間、分、秒、マイクロ秒の書式指定子のみを含めることができます。 その他の指定子では、NULL 値または 0 が生成されます。
time 値に 23 よりも大きな時間部分が含まれる場合は、%H および %k 時間書式指定子によって、0..23 の通常の範囲よりも大きな値が生成されます。 その他の時間書式指定子では、時間値モジュロ 12 が生成されます。
https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_time-format
MySQLの日付要素
| 書式 | 意味 |
|---|---|
| %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…) |
| %Y | 4桁の年 four-digit year |
| %y | 2桁の年 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) |
| %H | 24時間表現の時間(00..23) 24 hour time (00… 23) |
| %k | 24時間表現の時間(0..23) 24 hour time (0.. 23) |
| %h or %I | 12時間表現の時間(01..12) 12 hour time (01.. 12) |
| 書式 | 意味 |
|---|---|
| %h or %I | 12時間表現の時間(01..12) 12 hour time (01.. 12) |
| %l | 12時間表現の時間(1..12) 12 hour time (1.. 12) |
| %i | 分、数値(00..59) minutes, number (00… 59) |
| %r | 12時間表現の時刻(hh:mm:ss[AP]M) Time in 12 hour format (hh: mm: ss [AP] M) |
| %T | 24時間表現の時刻(hh:mm:ss) 24 hour time (hh: mm: ss) |
| %S or %s | 秒(00..59) Seconds (00… 59) |
| %p | AM 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の実行例
時刻の形式を「AM ・PM時:分:秒」の形式に整形
/* MySQL 15:20:00を「PM3:20:00」の形式にするサンプル */
SELECT TIME_FORMAT('15:20:00','%p%h:%i:%s');
現在日時の時間のみの形式を「AM ・PM時:分:秒」の形式に整形
/* MySQL 現在日時の時間のみを「AM ・PM3:20:00」の形式にするサンプル */
SELECT TIME_FORMAT(CURRENT_TIMESTAMP,'%p%h:%i:%s');