MariaDBでは、DATE_FORMAT() は、指定されたフォーマット文字列に従って日付をフォーマットする組み込みの日付と時刻の関数です。
2つの引数が必要です。日付とフォーマット文字列。また、ロケールを指定できるオプションの3番目の引数も受け入れます。
構文
構文は次のようになります:
DATE_FORMAT(date, format[, locale])
date は日付、format はフォーマット文字列(受け入れられたフォーマット指定子を参照)、およびlocale 返される形式に使用するオプションのロケールです。
例
次に例を示します:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y'); 結果:
+----------------------------------------------------+
| DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') |
+----------------------------------------------------+
| Friday, 25th January 2030 |
+----------------------------------------------------+
ここでも同じですが、今回は%rを使用します 返された時刻を12時間形式で返すには:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r'); 結果:
+------------------------------------------+
| DATE_FORMAT('2030-01-25 10:30:45', '%r') |
+------------------------------------------+
| 10:30:45 AM |
+------------------------------------------+ それらを組み合わせて、日時を取得できます:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y'); 結果:
+-------------------------------------------------------+
| DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') |
+-------------------------------------------------------+
| 10:30:45 AM Friday, 25th January 2030 |
+-------------------------------------------------------+
月の名前、日の名前などの言語は、lc_time_namesによって決定されます。 システム変数。デフォルトは常にen_US システムのロケール設定に関係なく。現在の設定を確認する方法は次のとおりです。
ロケールの引数
MariaDB 10.3.2以降、オプションの3番目の引数を使用してロケールを指定できます。これを指定すると、機能がセッション設定から独立します。
SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR'); 結果:
+----------------------------------------------------+
| DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') |
+----------------------------------------------------+
| viernes, 25th enero 2030 |
+----------------------------------------------------+ その他のロケールは次のとおりです:
SELECT
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH; 結果:
fr_FR: vendredi, 25th janvier 2030 hr_HR: Petak, 25th Siječanj 2030 fr_FR: Jumaat, 25th Januari 2030 th_TH: ศุกร์, 25th มกราคม 2030
この場合、最後はタイ語で、月の名前と日の名前にタイ文字を使用していますが、年はタイのカレンダーに変更されません。タイのカレンダーを使用すると、2030年は2573年になります。したがって、タイの年を使用する場合は、通過した日付ですでにタイの年が使用されていると想定されます。
現在の日付
ここでは、NOW()を渡します 現在の日付をフォーマットするための日付引数として:
SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y'); 結果:
+---------------------------------------+ | DATE_FORMAT(NOW(), '%r %W, %D %M %Y') | +---------------------------------------+ | 09:53:00 AM Tuesday, 11th May 2021 | +---------------------------------------+
無効な引数
無効な引数が渡された場合、DATE_FORMAT() nullを返します :
SELECT DATE_FORMAT('Homer', 'Simpson'); 結果:
+---------------------------------+
| DATE_FORMAT('Homer', 'Simpson') |
+---------------------------------+
| NULL |
+---------------------------------+ 引数がありません
DATE_FORMAT()を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT DATE_FORMAT(); 結果:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
そして別の例:
SELECT DATE_FORMAT('2030-05-21'); 結果:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
GET_FORMAT() 機能
GET_FORMAT()を使用することもできます DATE_FORMAT()の2番目の引数の関数 。これにより、特定の日付形式の完全な形式文字列が返されるため、使用する形式文字列を覚えておく必要がありません。