MariaDBでは、STR_TO_DATE()
は、指定された日付文字列と形式文字列に基づいて日時値を返す組み込みの日付と時刻の関数です。
STR_TO_DATE()
関数はDATE_FORMAT()
の逆です 機能。
構文
構文は次のようになります:
STR_TO_DATE(str,format)
str
は日付文字列で、format
日付文字列の形式を指定する形式文字列です。
例
次に例を示します:
SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y');
結果:
+------------------------------------------------------+ | STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') | +------------------------------------------------------+ | 2021-05-24 | +------------------------------------------------------+
フォーマット文字列は、最初の引数の日付がどのようにフォーマットされるかをMariaDBに指示するいくつかのフォーマット指定子で構成されます。フォーマット文字列で使用できるフォーマット指定子のリストについては、MariaDBフォーマット文字列を参照してください。
この例では、フォーマット文字列には日付部分のみが含まれているため、結果は日付値になります。
日時の値を返す
日時の値を返す例を次に示します。
SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S');
結果:
+---------------------------------------------------+ | STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') | +---------------------------------------------------+ | 2021-05-24 00:00:00 | +---------------------------------------------------+
この例では、最初の引数に時間部分が含まれていなくても、時間部分が追加されました。
最初の引数に時間部分を含む別の例を次に示します。
SELECT
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y');
結果:
+------------------------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') | +------------------------------------------------------------------+ | 2021-05-24 10:30:45 | +------------------------------------------------------------------+
もう1つは、日付文字列がより緩い時刻値を使用している場合です。
SELECT
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y');
結果:
+----------------------------------------------------------------+ | STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') | +----------------------------------------------------------------+ | 2021-05-24 10:30:00 | +----------------------------------------------------------------+
時間値を返す
ここでは、フォーマット文字列を変更して、時間値のみを返します。
SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S');
結果:
+-----------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') | +-----------------------------------------------------+ | 10:30:45 | +-----------------------------------------------------+
不正な日付/時刻文字列
不正な日付文字列を渡すと、null
が返されます 警告付き。
例:
SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y');
結果:
+-------------------------------------------------------+ | STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') | +-------------------------------------------------------+ | NULL | +-------------------------------------------------------+ 1 row in set, 1 warning (0.009 sec)
警告を見てみましょう:
SHOW WARNINGS;
結果:
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
引数がありません
STR_TO_DATE()
を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT STR_TO_DATE();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
そして別の例:
SELECT STR_TO_DATE('Friday, 28 May 2021');
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'