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'