Lämna det till enklare funktion s. DATE() returnerar datumdelen av en sträng i formatet ÅÅÅÅ-MM-DD:
SELECT DATE(birthday) FROM `test`
Resultat:
2004-12-25
2004-12-25
1994-12-25
1994-12-01
Anledningen till att din kod inte fungerar är att STR_TO_DATE() förväntar sig samma inmatnings- och utdataformat, t.ex. STR_TO_DATE('2014-08-29', '%Y-%m-%d') . Ta en titt på exempel i dokumentationen
. Den här funktionen används mest för att konvertera datum eller tider från ett format till ett annat, där originalformatet är något utanför MySQL och du vill importera data till MySQL:s datumformat till exempel - i det här fallet vet du vad som är originalet datumformatet är.
Exempel:
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