Logo
You
Code

Pasar fechas de español a ingles con MySql STR_TO_DATE

Autor YouCode - http://www.youcode.com.ar/mysql/pasar-fechas-de-espanol-a-ingles-con-mysql-strtodate-292

Cuando tenemos una tabla con fechas en español y queremos normalizarla a ingles, suele dar dolores de cabeza, aqui un query siemple para arreglar este problema utilizando STR_TO_DATE()

Suele pasar que nos dan un excel para importar datos y resulta que tenemos una celda de fechas con formato español (dia/mes/año).

Para cambiar el formato a ingles haremos lo siguiente:

Utilizaremos la función STR_TO_DATE() que nos proporciona MySql

Sabiendo que nuestra tabla donde importamos los datos, el campo de fecha debe ser varchar, entonces, una vez que los datos estan importados y vemos las fechas como 15/01/2014 (por ser verchar) , haremos el siguiente query para ver en principio los resultados de la conversion:
 
select campo_fecha,str_to_date((STR_TO_DATE(campo_fecha,'%d/%m/%Y')),'%Y-%m-%d') as fecha_ingles from MI_TABLA;
Lo que hacemos es un conver (o dos en un saque) de un string a un date, primeramente el conver lo hace en español para detectar el separador de dias,meses y años, luego de esa convercion ya "lista" hacemos el conver al formato ingles, el resultado seria algo asi:
 
campo_fecha	fecha_ingles
15/12/2014      2014-12-15
ya tenemos la conversion, ahora deberiamos normalizar el campo, entonces lo que haríamos seria:
 
update MI_TABLA 
               set campo_fecha=str_to_date((STR_TO_DATE(campo_fecha,'%d/%m/%Y')),'%Y-%m-%d');
ahora ya tenemos las fechas como debe ser, nos queda pasar el campo de varchar a date.

No vamos a indicar como hacer un alter, lo que se debe saber es que si hacemos el alter a date desde un varchar SIN haber cambiado el formato de fechas, entonces las fechas apareceran como 0000-00-00 .

bueno, es todo en cuanto a fechas de español a inlges
http://www.youcode.com.ar/mysql/pasar-fechas-de-espanol-a-ingles-con-mysql-strtodate-292