Lascialo a funzione più semplice S. DATE()
restituisce la parte della data di una stringa nel formato AAAA-MM-GG:
SELECT DATE(birthday) FROM `test`
Risultato:
2004-12-25
2004-12-25
1994-12-25
1994-12-01
Il motivo per cui il tuo codice non funziona è che STR_TO_DATE()
prevede gli stessi formati di input e output, ad es. STR_TO_DATE('2014-08-29', '%Y-%m-%d')
. Dai un'occhiata a esempi nella documentazione
. Questa funzione viene utilizzata principalmente per convertire date o orari da un formato all'altro, dove il formato originale è qualcosa di esterno a MySQL e vuoi importare i dati nel formato della data di MySQL, ad esempio - in questo caso, saprai qual è l'originale il formato della data è.
Esempio:
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