SQL Academy
Premium
Funktionsreferenz

STR_TO_DATE

Entsprechung in PostgreSQL:

Wandelt einen String anhand des angegebenen Formats in ein Datum, eine Uhrzeit oder ein Datum mit Uhrzeit um.

MySQL 8.4
STR_TO_DATE(string, format)
string
String mit Datum oder Uhrzeit
VARCHAR
format
Format des Strings, Platzhalter wie bei DATE_FORMAT
VARCHAR

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

MySQL 8.4
SELECT STR_TO_DATE('16.06.2022', '%d.%m.%Y') AS parsed;
parsed
2022-06-16

Datum mit Uhrzeit aus einem String

MySQL 8.4
SELECT STR_TO_DATE('November 13, 1998 14:05', '%M %d, %Y %H:%i') AS parsed;
parsed
1998-11-13 14:05:00

String passt nicht zum Format

MySQL 8.4
SELECT STR_TO_DATE('2022/06/16', '%d.%m.%Y') AS parsed;
parsed
<NULL>

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.

Siehe auch

Wo du es lernst