Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-09-2008
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question Transformar fechas en SQL

Buenas, por un error garrafal puse un campo de fechas de tipo varchar en la BD y no de tipo date como debería ser.
Ahora necesito comparar esa fecha con otra y no puedo hacerlo. Uso la función CAST() del SQL de firebird pero me dá error en fechas como "18/02/2008" pues esta fecha está de la forma dd/mm/aaaa y CAST() espera que esté de la forma mm/dd/aaa.
La cuestión es que no encuentro la forma de poder realizar la comparación dentro del Where del SQL que en definitiva es lo que quiero.

Necesito por favor alguna sugerencia y/o posible solución.
Uso firebird 1.5, delphi 7.

Saludos.

Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #2  
Antiguo 10-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Yo te aconsejaría que actualizases la BD con el campo correctamente definido, con un pequeño script...

Código Delphi [-]
//CadenaFecha es un listbox
CadenaFecha.items.delimiter:='/';
q.sql.add('select TuCampoClave,TuFecha from tutabla');
q.open;
while not(q.eof) do
begin
 CadenaFecha.items.clear;
 CadenaFecha.items.delimitertext:=q.fieldbyname('TuFecha').asstring;
 q2.clear;
 q2.sql.add(update tutabla set TuFecha2='''+ CadenaFecha.items[1] + '/'  +CadenaFecha.items[0] + '/' +CadenaFecha.items[2] + ''' 
where CampoClave=' + q.fieldbyname('TuCampoClave').asstring ); // En Firebird lo mismo cambia un poco esta sentencia pero en esencia es asi. 
 q2.execSQL;
 q.next;
end;

Con esto cargarías en el campo TuFecha2 (que sería de tipo date) la fecha correctamente, luego sería cuestión de cargarte TuFecha tipo string, y cambiarle el nombre al campo TuFecha2 a TuFecha.... espero haberte ayudado ya me dirás....

(je je hoy estoy utilizando mucho el delimiter...)
Responder Con Cita
  #3  
Antiguo 10-09-2008
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Arrow fechas

La verdad que la respuesta es muy adecuada.
Esperaba encontrar una UDF que me solucionara el problema pero resulta que rFuncUDF solo tiene DateToStr y no lo contrario. Es raro pero no tenga la función inversa pero en fin...

Muchas gracias compañero.

Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #4  
Antiguo 11-09-2008
hecospina hecospina is offline
Miembro
 
Registrado: oct 2007
Posts: 202
Poder: 17
hecospina Va por buen camino
Hola
Puedes hacer lo siguiente

Código SQL [-]
select cast((substring(fecha from 4 for 2)||'/'||substring(fecha from 1 for 2)||'/'||substring(fecha from 7 for 4)) as date from tabla

Lo que se esta haciendo es concatenar 3 subcadenas para armar el dato de la fecha con el formato que espera la base de datos

Seria recomendable crear en la tabla original un nuevo campo con el tipo de dato correcto (date) y con un update con esta misma instruccion colocar alli la fecha real y continuar asignando la fecha a este nuevo campo

Suerte
Responder Con Cita
  #5  
Antiguo 11-09-2008
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Post El dichoso substring

Muchas gracias, creo que con esto llego a una solución con la que gano mucho tiempo. Si bien es precaria está buena.
Esto me va a enseñar a poner los tipos de datos correctos cuando haga el diseño de la BD.
No soy muy asiduo al substring pero en este caso me viene como anillo al dedo.

Otra vez agradecido.

Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Transformar a Bitmap Marian0 Gráficos 2 23-02-2007 15:39:06
Como transformar arreglos lucasarts_18 PHP 0 21-12-2006 15:40:00
transformar mdb a gdb armed Firebird e Interbase 3 20-07-2005 16:01:46
Transformar imagen Decker Gráficos 2 25-02-2005 18:38:54
transformar HTML a XML jpcancino Internet 1 07-01-2004 14:48:38


La franja horaria es GMT +2. Ahora son las 01:10:54.


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