Convertir campo de fecha tipo VARCHAR a DATE
Tengo una base de datos en la que se almacenan fechas en una campo, pero que es de tipo texto (VARCHAR), y contiene las fechas con formato DD/MM/YYYY.
Y quería tener las fechas en un campo de tipo fecha (DATE), y por supuesto, sin perder la información de los miles de registros que ya existen en la tabla.
Así que primero examiné la estructura de la tabla, y agregé un campo de tipo DATE llamado fecc.
Luego, desde la opción del menú Herramientas > SQL... escribí el siguiente comando a ejecutar:
UPDATE "MITABLA" SET "fecc" =
CAST( SUBSTRING ( "FEC", 7, 4 ) ¦¦ '-' ¦¦
SUBSTRING ( "FEC", 4, 2 ) ¦¦ '-' ¦¦
SUBSTRING ( "FEC", 1, 2 )
AS DATE)
Como podemos leer de la misma orden, se actualiza el campo fecc con el contenido del campo de texto FEC, tomando mediante SUBSTRING las partes que componen la fecha en texto (año, mes y día) y dispuestas en este orden; mediante el operador ¦¦ concateno con separadores guión corto formando una cadena de texto con las fechas en formato YYYY-MM-DD.
Así, para cada registro, si la fecha contenida en el campo FEC era, por ejemplo, 30/06/2011, obtengo una cadena como 2011-06-30 que todavía no puedo insertar en el campo fecc.
Para conseguirlo necesitaré que la cadena sea convertida a fecha, así que utilizo el comando CAST, que permite convertir un dato o campo de un determinado tipo en otro.
El resto ya es aburrido: Eliminar el campo FEC, renombrar el campo fecc, ...