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番目の引数の関数 。これにより、特定の日付形式の完全な形式文字列が返されるため、使用する形式文字列を覚えておく必要がありません。