Convertendo uma data no MySQL do campo string

Eu estou usando um sistema onde as datas são armazenadas como seqüências de caracteres no formato dd/mm/yyyy . É possível converter isso para yyyy-mm-dd em uma consulta SELECT (para que eu possa usar DATE_FORMAT nela)? O MySQL possui uma function de análise de data?

Atualmente, o único método que posso pensar é concatenar um monte de substrings, mas espero que haja uma solução mais simples.

(Infelizmente não consigo converter o campo para um campo de data verdadeira, já que é uma meta-tabela: a mesma coluna contém valores para diferentes campos que são apenas strings.)

Este:

 STR_TO_DATE(t.datestring, '%d/%m/%Y') 

… converterá a string em um tipo de dados datetime. Para ter certeza de que sai no formato desejado , use DATE_FORMAT :

 DATE_FORMAT(STR_TO_DATE(t.datestring, '%d/%m/%Y'), '%Y-%m-%d') 

Se você não puder alterar o tipo de dados na coluna original, sugiro criar uma exibição que use a chamada STR_TO_DATE para converter a sequência em um tipo de dados DateTime.

Sim, há str_to_date

 mysql> select str_to_date("03/02/2009","%d/%m/%Y"); +--------------------------------------+ | str_to_date("03/02/2009","%d/%m/%Y") | +--------------------------------------+ | 2009-02-03 | +--------------------------------------+ 1 row in set (0.00 sec) 

STR_TO_DATE permite que você faça isso e possui um argumento de formato.

 SELECT STR_TO_DATE(dateString, '%d/%m/%y') FROM yourTable...