Überlassen Sie es einer einfacheren Funktion s. DATE()
gibt den Datumsteil einer Zeichenkette im Format JJJJ-MM-TT zurück:
SELECT DATE(birthday) FROM `test`
Ergebnis:
2004-12-25
2004-12-25
1994-12-25
1994-12-01
Der Grund, warum Ihr Code nicht funktioniert, ist, dass STR_TO_DATE()
erwartet gleiche Ein- und Ausgabeformate, z.B. STR_TO_DATE('2014-08-29', '%Y-%m-%d')
. Werfen Sie einen Blick auf Beispiele in der Dokumentation
. Diese Funktion wird hauptsächlich verwendet, um Datums- oder Zeitangaben von einem Format in ein anderes zu konvertieren, wenn das Originalformat etwas außerhalb von MySQL ist und Sie die Daten beispielsweise in das Datumsformat von MySQL importieren möchten - in diesem Fall wissen Sie, was das Original ist Datumsformat ist.
Beispiel:
SELECT STR_TO_DATE('20041225', '%Y-%m-$d'); -- null - formats don't match
SELECT STR_TO_DATE('2004-12-25', '%Y-%m-%d'); -- 2004-12-25 - formats match