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'