Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Cambio tipo de datos (https://www.clubdelphi.com/foros/showthread.php?t=50721)

Rockin 26-11-2007 20:25:36

Cambio tipo de datos
 
Hola a todos, tengo una BD Firebird con un campor fecha declarado como Char con registros, mi pregunta es ¿seria posible cambiar el tipo de datos a Date sin perder los registros?. Lo he intentado de varias manera y he buscado en el foro y nada.

Gracias de antemano.
Saludos.

Chris 26-11-2007 20:27:24

Podrías crear un nuevo campo DATE, luego tranferir los datos a este nuevo campo y al final eliminas el viejo campo. Después de todo, cambias el nombre del nuevo campo para que coicida con el anterior.

El solo una idea. Saludos.

maeyanes 26-11-2007 20:30:29

Y es, a mi punto de vista, la mejor solución...


Saludos...

Rockin 26-11-2007 20:48:47

Si es lo que habia pensado, pero como es la manera mas rapida de copiar los registros de un campo a otro, mediante UPDATE?

maeyanes 26-11-2007 20:58:53

Así es...

Puedes hacer algo como:

Código SQL [-]
update tabla set campofechadate = cast(campofechachar as date)

Saludos...

Rockin 26-11-2007 21:45:54

lo he intentado asi, pero me da error al convertir el formato, la fecha esta guardad como dd/mm/yyyy pero firebird la interpreta al reves, y me da el error convert string "15/10/2007". Como puedo cambiar el formato guardado?

Al González 26-11-2007 22:31:26

¡Hola a todos!

Creo que el siguiente ejemplo puede darte una idea:
Código SQL [-]
Select

Cast (SubString ('15/10/2007' From 7 For 4) || '-' ||
      SubString ('15/10/2007' From 4 For 2) || '-' ||
      SubString ('15/10/2007' From 1 For 2) As Date)

From RDB$Database
La clave es separar las partes de la fecha con la función SubString, concatenándolas de nuevo bajo el formato universal ISO (aaaa-mm-dd) y, finalmente, haciendo un molde de tipo (Cast) para convertir la cadena en un valor de tipo Date.

Espero te sirva, no dejes de contarnos cómo te fue.

Un abrazo convertido.

Al González. :)

Rockin 27-11-2007 15:08:38

al final lo exporte a access al campo char, cree el campo date y lo importe desde access.

Era lo mas facil

Saludos y gracias a todos

Shikanda 18-12-2007 18:36:45

Ya de paso...
 
Aprovecho este hilo para hacer una pregunta.

Me encontraba en un caso muy parecido al que comentais. Tenia que hacer que un campo fuera clave primaria (y no nulo) y como no podia modificar el campo, hice otro auxiliar donde copié el contenido, eliminé el original, creé otro campo nuevo (con el nombre del original) a donde volvi a copiar el contenido y finalmente borré el campo auxiliar.
El problema viene al manejar la tabla, ya que mi "nuevo" campo clave no tiene el indice del original dentro de la tabla, por lo que se me ha desorganizado todo un poco. He buscado la forma de especificar el indice en el que quiero añadir un campo dentro de la tabla pero no hay forma. A alguien se le ocurre el modo de hacerlo (o alternativa a semejante desastre)??


La franja horaria es GMT +2. Ahora son las 23:57:30.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi