In MariaDB, STR_TO_DATE()
is een ingebouwde datum- en tijdfunctie die een datetime-waarde retourneert, gebaseerd op de gegeven datumtekenreeks en opmaakreeks.
De STR_TO_DATE()
functie is het omgekeerde van de DATE_FORMAT()
functie.
Syntaxis
De syntaxis gaat als volgt:
STR_TO_DATE(str,format)
Waar str
is de datumstring, en format
is een format string die het formaat van de date string specificeert.
Voorbeeld
Hier is een voorbeeld:
SELECT STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y');
Resultaat:
+------------------------------------------------------+ | STR_TO_DATE('Monday, May 24, 2021', '%W, %M %e, %Y') | +------------------------------------------------------+ | 2021-05-24 | +------------------------------------------------------+
De opmaakreeks bestaat uit een aantal opmaakspecificaties die MariaDB vertellen hoe de datum in het eerste argument is opgemaakt. Zie MariaDB Format Strings voor een lijst met formaatspecificaties die in een format string kunnen worden gebruikt.
In dit voorbeeld is het resultaat een datumwaarde, omdat de notatiereeks alleen de datumdelen bevat.
Retourneer een datum/tijd-waarde
Hier is een voorbeeld dat een datetime-waarde retourneert:
SELECT STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S');
Resultaat:
+---------------------------------------------------+ | STR_TO_DATE('May 24, 2021', '%M %e, %Y %H:%i:%S') | +---------------------------------------------------+ | 2021-05-24 00:00:00 | +---------------------------------------------------+
In dit voorbeeld is het tijdsdeel toegevoegd, hoewel het eerste argument geen tijdsdeel bevatte.
Hier is nog een voorbeeld dat een tijdsdeel in het eerste argument bevat:
SELECT
STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y');
Resultaat:
+------------------------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S on %M %e, %Y') | +------------------------------------------------------------------+ | 2021-05-24 10:30:45 | +------------------------------------------------------------------+
Hier is er nog een, waarbij de datumreeks een lossere tijdwaarde gebruikt:
SELECT
STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y');
Resultaat:
+----------------------------------------------------------------+ | STR_TO_DATE('10.30pm on May 24, 2021', '%H.%ipm on %M %e, %Y') | +----------------------------------------------------------------+ | 2021-05-24 10:30:00 | +----------------------------------------------------------------+
Retourneer een tijdwaarde
Hier veranderen we de opmaakreeks om alleen de tijdwaarde terug te geven:
SELECT STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S');
Resultaat:
+-----------------------------------------------------+ | STR_TO_DATE('10:30:45 on May 24, 2021', '%H:%i:%S') | +-----------------------------------------------------+ | 10:30:45 | +-----------------------------------------------------+
Ongeldige datum/tijd-tekenreeks
Het doorgeven van een ongeldige datumreeks retourneert null
met een waarschuwing.
Voorbeeld:
SELECT STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y');
Resultaat:
+-------------------------------------------------------+ | STR_TO_DATE('Humpday, May 26, 2021', '%W, %M %e, %Y') | +-------------------------------------------------------+ | NULL | +-------------------------------------------------------+ 1 row in set, 1 warning (0.009 sec)
Laten we eens kijken naar de waarschuwing:
SHOW WARNINGS;
Resultaat:
+---------+------+----------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------------------+ | Warning | 1411 | Incorrect datetime value: 'Humpday, May 26, 2021' for function str_to_date | +---------+------+----------------------------------------------------------------------------+
Ontbrekend argument
Bellen STR_TO_DATE()
met het verkeerde aantal argumenten, of zonder het doorgeven van argumenten, resulteert in een fout:
SELECT STR_TO_DATE();
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'
En nog een voorbeeld:
SELECT STR_TO_DATE('Friday, 28 May 2021');
Resultaat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'STR_TO_DATE'