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
[RESUELTO] Cambio formato columna (DATE)
[RESUELTO] Cambio formato columna (DATE)
Última edición por mauricio el Mié Nov 15, 2017 7:12 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
Razón: Marcar icono de resuelto
OpenOffice 3.0 en Windows XP Profesional
Re: Cambio formato columna (DATE)
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.
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
Re: Cambio formato columna (DATE)
Muchas gracias. me ha sido muy util
OpenOffice 3.0 en Windows XP Profesional
Re: [RESUELTO]Cambio formato columna (DATE)
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 ???
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