STR_TO_DATE
Wandelt einen String anhand des angegebenen Formats in ein Datum, eine Uhrzeit oder ein Datum mit Uhrzeit um.
STR_TO_DATE(string, format)- string
- String mit Datum oder UhrzeitVARCHAR
- format
- Format des Strings, Platzhalter wie bei DATE_FORMATVARCHAR
Rückgabewert
Datum mit Uhrzeit, wenn das Format Datum und Uhrzeit enthält, sonst Datum oder Uhrzeit; NULL, wenn der String nicht zum Format passt, der Tag größer als 31 oder der Monat größer als 12 ist
Beispiele
Datum im Format TT.MM.JJJJ einlesen
SELECT STR_TO_DATE('16.06.2022', '%d.%m.%Y') AS parsed;Datum mit Uhrzeit aus einem String
SELECT STR_TO_DATE('November 13, 1998 14:05', '%M %d, %Y %H:%i') AS parsed;String passt nicht zum Format
SELECT STR_TO_DATE('2022/06/16', '%d.%m.%Y') AS parsed;Details
Die Platzhalter sind dieselben wie bei DATE_FORMAT. Der String wird von Anfang an gelesen: Der Text zwischen den Platzhaltern muss zum Format passen, überzählige Zeichen am Ende werden ignoriert.
Ob das Datum existiert, wird nicht geprüft: Der Tag wird nur mit dem Bereich von 1 bis 31 verglichen. STR_TO_DATE('31.02.2022', '%d.%m.%Y') gibt das nicht existierende Datum 2022-02-31 zurück, nicht NULL. Um solche Daten auszusortieren, addiere INTERVAL 0 DAY zum Ergebnis — überzählige Tage rutschen in den nächsten Monat (2022-03-03) — und vergleiche es mit DATE_FORMAT mit dem Ausgangsstring: Bei einem nicht existierenden Datum stimmen die Strings nicht überein.