[RESUELTO] Cambio formato columna (DATE)

Discute sobre las herramientas de la base de datos
Responder
cadeq
Mensajes: 24
Registrado: Vie Abr 09, 2010 10:53 am

[RESUELTO] Cambio formato columna (DATE)

Mensaje por cadeq »

Despues de Migrar una base de datos de access a OOo, en la tabla "Organizaciones", hay una campo llamado "fechaBaja", el cual tiene algunas fechas y otros registros esta en null.

el problema es que a la hora de importar no podia ponerlo en modo DATE el formato del campo, ya que me salia una excepcion y borraba todos los datos que contenia el campo; asi que de forma provisional lo deje el campo como VARCHAR.

Ahora intento pasarlo a formato DATE pero no me deja.

alguna solucion??


gracias
Última edición por mauricio el Mié Nov 15, 2017 7:12 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
OpenOffice 3.0 en Windows XP Profesional
Cascabel
Mensajes: 283
Registrado: Mié Nov 11, 2009 10:53 am

Re: Cambio formato columna (DATE)

Mensaje por Cascabel »

A mí sí que me permite pasar de VARCHAR a DATE y viceversa en la definición de la tabla y me conserva los datos.
Quizá sea por la versión que utilizas.
También me gustaría saber el formato en el que quedaron las fechas al importarlas (con respecto al orden, separador, siglo y ceros a la izquierda, por ejemplo: 2010/05/13 o 2010-5-13 o 13-05-2010 o 13-05-10).

De todos modos, una forma de solucionarlo paso a paso:

(Ejecuta los comandos SQL desde [Menú/Herramientas/SQL])

1. Añadir una columna temporal a la tabla, de tipo DATE.
Puedes hacerlo en la definición de la tabla o con una sentencia:

ALTER TABLE "Fechas" ADD "FechaDATE" DATE

2. Convertir y copiar la columna VARCHAR a la columna temporal:

UPDATE "Fechas" SET "FechaDATE"=CONVERT("FechaCHAR",DATE)

Esto asume que las fechas están en formato "YYYY-MM-DD". Si no es así, deberías convertirlas primero.
Por ejemplo (de "DD-MM-YYYY" a "YYYY-MM-DD"):

UPDATE "Fechas" SET "FechaDATE"=CONVERT(RIGHT("FechaCHAR",4) || '-' || SUBSTR("FechaCHAR",4,2) || '-' || LEFT("FechaCHAR",2),DATE)

3. Verificar que los datos se hayan copiado correctamente. [Menú/Ver/Actualizar tablas] Luego, abrir la tabla.

4. Cambiar el tipo de la columna VARCHAR a DATE:

ALTER TABLE "Fechas" ALTER COLUMN "FechaCHAR" DATE

En el caso de que hayas tenido que convertir el formato, y si actualizas de nuevo la tabla, los datos de la columna original no tendrán sentido, pero fíjate en la columna temporal.

También puedes hacerlo desde la definición de la tabla.

Si te da algún problema, sugiero borrar los datos manualmente antes de hacer la conversión de tipo:

UPDATE "Fechas" SET "FechaCHAR"=NULL

5. Recuperar los valores convertidos:

UPDATE "Fechas" SET "FechaCHAR"="FechaDATE"

6. Verificar que se ha copiado bien.

7. Borrar la columna temporal:

ALTER TABLE "Fechas" DROP "FechaDATE"

Nota: Lo de la columna temporal es por seguridad. Podrías hacerlo todo sobre la columna original, pero reza entonces para que un error no arruine los datos en el proceso.
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
cadeq
Mensajes: 24
Registrado: Vie Abr 09, 2010 10:53 am

Re: Cambio formato columna (DATE)

Mensaje por cadeq »

Muchas gracias. me ha sido muy util
OpenOffice 3.0 en Windows XP Profesional
pablo84
Mensajes: 1
Registrado: Mié Nov 15, 2017 6:31 pm

Re: [RESUELTO]Cambio formato columna (DATE)

Mensaje por pablo84 »

Buenas !!! Acabo de anotarme en el foro y justo con el problema este de la conversion estoy !
Segui los pasos que anotó Cascabel, pero me da el siguiente error : " 1: Wrong data type: java.lang.IllegalArgumentException ".

2. Convertir y copiar la columna VARCHAR a la columna temporal:

UPDATE "Fechas" SET "FechaDATE"=CONVERT("FechaCHAR",DATE)

Esto asume que las fechas están en formato "YYYY-MM-DD".

Hice exactamente esos pasos, yo tenia las fechas con "/" y las cambie a todas por "-" para poder implementar el codigo de Cascabel, pero me da el error que
mostre mas arriba.

Alguna sugerencia / ayuda por favor ???
OpenOffice 3.1 en Windows Vista
Responder