I MariaDB, STR_TO_DATE()
är en inbyggd datum- och tidsfunktion som returnerar ett datum och tid, baserat på den givna datumsträngen och formatsträngen.
STR_TO_DATE()
funktion är inversen av DATE_FORMAT()
funktion.
Syntax
Syntaxen ser ut så här:
STR_TO_DATE(str,format)
Där str
är datumsträngen och format
är en formatsträng som anger formatet för datumsträngen.
Exempel
Här är ett exempel:
SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y');
Resultat:
+------------------------------------------------------+ | STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') | +------------------------------------------------------+ | 2021-05-24 | +------------------------------------------------------+
Formatsträngen består av ett antal formatspecifikationer som talar om för MariaDB hur datumet i det första argumentet formateras. Se MariaDB Format Strings för en lista över formatspecifikationer som kan användas i en formatsträng.
I det här exemplet är resultatet ett datumvärde, eftersom formatsträngen bara innehåller datumdelarna.
Returnera ett datum/tidsvärde
Här är ett exempel som returnerar ett datetime-värde:
SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S');
Resultat:
+---------------------------------------------------+ | STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') | +---------------------------------------------------+ | 2021-05-24 00:00:00 | +---------------------------------------------------+
I det här exemplet lades tidsdelen till, även om det första argumentet inte innehöll någon tidsdel.
Här är ett annat exempel som inkluderar en tidsdel i det första argumentet:
SELECT
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y');
Resultat:
+------------------------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') | +------------------------------------------------------------------+ | 2021-05-24 10:30:45 | +------------------------------------------------------------------+
Här är en annan, där datumsträngen använder ett lösare tidsvärde:
SELECT
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y');
Resultat:
+----------------------------------------------------------------+ | STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') | +----------------------------------------------------------------+ | 2021-05-24 10:30:00 | +----------------------------------------------------------------+
Returnera ett tidsvärde
Här ändrar vi formatsträngen för att bara returnera tidsvärdet:
SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S');
Resultat:
+-----------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') | +-----------------------------------------------------+ | 10:30:45 | +-----------------------------------------------------+
Olaglig datum-/tidssträng
Att skicka en olaglig datumsträng returnerar null
med en varning.
Exempel:
SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y');
Resultat:
+-------------------------------------------------------+ | STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') | +-------------------------------------------------------+ | NULL | +-------------------------------------------------------+ 1 row in set, 1 warning (0.009 sec)
Låt oss titta på varningen:
SHOW WARNINGS;
Resultat:
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
Argument saknas
Ringer STR_TO_DATE()
med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:
SELECT STR_TO_DATE();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
Och ett annat exempel:
SELECT STR_TO_DATE('Friday, 28 May 2021');
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'