Deixe para função mais simples s.
DATE()
retorna a parte da data de uma string no formato AAAA-MM-DD:SELECT DATE(birthday) FROM `test`
Resultado:
2004-12-25
2004-12-25
1994-12-25
1994-12-01
O motivo pelo qual seu código não está funcionando é que
STR_TO_DATE()
espera os mesmos formatos de entrada e saída, por exemplo STR_TO_DATE('2014-08-29', '%Y-%m-%d')
. Dê uma olhada no exemplos na documentação
. Esta função é usada principalmente para converter datas ou horas de um formato para outro, onde o formato original é algo de fora do MySQL e você deseja importar os dados para o formato de data do MySQL por exemplo - neste caso, você saberá qual é o formato original formato de data é. Exemplo:
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