I MariaDB, STR_TO_DATE() er en indbygget dato- og klokkeslætsfunktion, der returnerer en dato-tidsværdi baseret på den givne datostreng og formatstreng.
STR_TO_DATE() funktion er det omvendte af DATE_FORMAT() funktion.
Syntaks
Syntaksen ser sådan ud:
STR_TO_DATE(str,format)
Hvor str er datostrengen og format er en formatstreng, der angiver formatet på datostrengen.
Eksempel
Her er et eksempel:
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 |
+------------------------------------------------------+ Formatstrengen består af en række formatspecifikationer, der fortæller MariaDB, hvordan datoen i det første argument er formateret. Se MariaDB Format Strings for en liste over formatspecifikationer, der kan bruges i en formatstreng.
I dette eksempel er resultatet en datoværdi, fordi formatstrengen kun indeholder datodelene.
Returner en dato-tidsværdi
Her er et eksempel, der returnerer en datetime-værdi:
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 dette eksempel blev tidsdelen tilføjet, selvom det første argument ikke indeholdt nogen tidsdel.
Her er et andet eksempel, der inkluderer en tidsdel i det første argument:
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 |
+------------------------------------------------------------------+ Her er en anden, hvor datostrengen bruger en løsere tidsværdi:
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 |
+----------------------------------------------------------------+ Returnering af en tidsværdi
Her ændrer vi formatstrengen til kun at returnere tidsværdien:
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 |
+-----------------------------------------------------+ Ulovlig dato-/tidsstreng
Passering af en ulovlig datostreng returnerer null med en advarsel.
Eksempel:
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) Lad os se på advarslen:
SHOW WARNINGS; Resultat:
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
Manglende argument
Kalder STR_TO_DATE() med det forkerte antal argumenter, eller uden at sende nogen argumenter, resulterer det i en fejl:
SELECT STR_TO_DATE(); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
Og endnu et eksempel:
SELECT STR_TO_DATE('Friday, 28 May 2021'); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'