PDA

Ver la Versión Completa : Fecha en where


StartKill
21-05-2004, 18:51:31
Hola club

Trabajo con delphi 7.0 y interbase 6.0.1 y utilizo los componetes IBX.

Tengo problemas al hace un select a un conjunto de registros que estan filtrados por un where donde incluye fechas.

Resulta que desde mi programa tengo in IBQuery conectado a una tabla y un where que utiliza parametros para el filtro respectivo

select * from tabla_fecha where ffec >= :fini and ffec <= :ffin

y hay veces que no lo ejecuta existiendo datos que cumplen el where.

Utilizando el EMS-Interbase note que la fechas que maneja el interbase utilizan un formato mm/dd/aaaa y el formato de ingreso del programa es dd/mm/aaaa, no deseo cambiar el formato de ingreso ya que el formato estandar que se utiliza aca el dd/mm/aaaa... si alguien me diera alguna idea para esto sera bienvenida.

Your friend,

StartKill
Lima-Perú

Firibiri
21-05-2004, 18:58:03
Puedes probar con formatdatetime
select * from tabla_fecha where formatdatetime('mm/dd/yyyy',ffec)>= :formatdatetime('mm/dd/yyyy',fini)
and formatdatetime('mm/dd/yyyy',ffec) <= :(formatdatetime('mm/dd/yyyy',ffin)

lo que no se si tendras que ponerle un quotedstr(las comillas) en los formatdatetime

delphi.com.ar
21-05-2004, 19:08:34
Supongo que Interbase soporta Bind Params, de ser así no te tendrías que preocupar por que el formato de la fecha en el servidor y el cliente sean compatibles, siempre y cuando utilices parámetros para pasar los valores.

Saludos!

guillotmarc
21-05-2004, 19:20:16
Hola.

Deberias buscar otra posible razón, puesto que el componente IBOQuery ya se ocupará del formato de las fechas.

Saludos.

StartKill
21-05-2004, 20:25:59
Holas,

:D los peores errores se cometen por exceso de confianza, por subestimar a nuestro menor enemigo(nosostros mismos)...

Firibiri, delphi.com.ar, delphi.com.ar, guillotmarc, les estoy muy agradecido...
revise mi select y me habia equivocado.

antes
select * from tabla_fecha where ffec >= :fini and ffec <= :ffin

despues
select * from tabla_fecha where :fini >= ffec and :ffin <= ffec

Your Friend, :cool:

StartKill
Lima-Perú

guillotmarc
21-05-2004, 20:51:36
Hola.

Parece más lógica la primera consulta que la segunda. Una sintaxis alternativa, que hace lo mismo (que la 1ª consulta) pero que me parece más comprensible es :

select * from tabla_fecha where ffec between :fini and :ffin

Saludos.