2009-12-07 17 views
52

Estoy usando un sistema donde las fechas se almacenan como cadenas en el formato dd/mm/yyyy. ¿Es posible convertir esto a yyyy-mm-dd en una consulta SELECT (para que pueda usar DATE_FORMAT)? MySQL tiene una función de análisis de fecha?Convertir una fecha en MySQL desde el campo de cadena

Actualmente, el único método que se me ocurre es concatenar un conjunto de subcadenas, pero espero que haya una solución más simple.

(Lamentablemente no puedo convertir el campo a un verdadero campo de fecha, ya que es un meta-tabla:. La misma columna contiene valores para los diferentes campos que son meras cadenas)

Respuesta

111

Este:

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

... será convertir la cadena en un tipo de datos de fecha y hora. Para estar seguros de que se trata en el formato que desee, utilice DATE_FORMAT:

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

Si no puede cambiar el tipo de datos de la columna original, sugiero creating a view que utiliza la llamada STR_TO_DATE para convertir la cadena a una Tipo de datos de fecha y hora

+1

es útil y me ayudó mucho para una solución rápida –

17

Sí, hay 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) 
0
SELECT STR_TO_DATE(dateString, '%d/%m/%y') FROM yourTable... 
Cuestiones relacionadas