Pozostaw to prostszej funkcji s. DATE()
zwraca datę w ciągu w formacie RRRR-MM-DD:
SELECT DATE(birthday) FROM `test`
Wynik:
2004-12-25
2004-12-25
1994-12-25
1994-12-01
Powodem, dla którego Twój kod nie działa, jest to, że STR_TO_DATE()
oczekuje tych samych formatów wejściowych i wyjściowych, np. STR_TO_DATE('2014-08-29', '%Y-%m-%d')
. Spójrz na przykłady w dokumentacji
. Ta funkcja służy głównie do konwersji dat lub godzin z jednego formatu na inny, gdzie oryginalny format jest czymś spoza MySQL i chcesz zaimportować dane na przykład do formatu daty MySQL - w tym przypadku będziesz wiedział, jaki jest oryginał format daty to.
Przykład:
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