Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/09/2008, 07:40
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: De VARCHAR a TIME_STAMP sin perder datos

Claro que se puede:
Imagino que las fechas las incluyes así: 3/2/08 para tres de febrero de 2008, y 4/12/97 para cuatro de diciembre de 1997.
Usaré la función substring_index, pero la misma sólo funciona con versiones recientes de MySQL. No sé cuál usas tú.

Imaginemos que el campo donde tienes la fecha metida como texto se llama fechatexto, y que tu tabla se llama tabla.

Primer paso
Crear un campo tipo timestamp al que llamarás fechatimestamp

Segundo paso:
Haces esta consulta de selección para ver si las fechas salen bien. Controla que todas las fechas tengan las dos barras de separación y los números bien.
SELECT fechatexto, CAST(CONCAT(IF(substring_index(fechatexto,'/',-1) > 9, CONCAT('19', substring_index(fechatexto,'/',-1) ), CONCAT('20', substring_index(fechatexto,'/',-1))),'-',substring_index(substring_index(fechatexto,'/',2),'/',-1),'-',substring_index(fechatexto,'/',1)) AS DATE) FROM tabla

Tercer paso
Si todo ha ido bien, lanzas la siguiente consulta de actualización:
UPDATE tabla SET fechatimestamp = CAST(CONCAT(IF(substring_index(fechatexto,'/',-1) > 9, CONCAT('19', substring_index(fechatexto,'/',-1) ), CONCAT('20', substring_index(fechatexto,'/',-1))),'-',substring_index(substring_index(fechatexto,'/',2),'/',-1),'-',substring_index(fechatexto,'/',1)) AS DATE)

Luego, tras comprobar que todo está bien, puedes eliminar el campo fechatexto.

Y ya tendrás lo que quieres.

Última edición por jurena; 06/09/2008 a las 07:58