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