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 05-03-2010
El_Raso El_Raso is offline
Miembro
 
Registrado: oct 2003
Posts: 135
Poder: 22
El_Raso Va por buen camino
Question Consulta de fecha con hora, como?

Que tal a todos...

Mi problema es el siguiente, estoy usando Firebird 2.1 Dialecto 1 (la DB fue creada inicialmente asi) tengo lo siguiente:
Una tabla FACTURA con dos campos FECHA tipo Date y HORA tipo VARCHAR(13) ya que el dialecto 1 no soporta el tipo TIME.

El formato de la hora es del tipo 00:00 AM Ej. "12:56 PM" asi grabo el campo hora en la tabla.

Quiero hacer una consulta entre fechas que involucre la hora. Ej. del 03/04/2010 a las 12:34 AM hasta el 06/04/2010 04:12 PM y no me trae ningun dato. estoy usando el siguiente query:

select sum(b.montoneto), count(b.numerofactura) from factura b
where b.condicionfactura = 'CONTADO' and
b.estadofactura = 'PAGADA' and
b.fechafactura >= :FechaInicial and
b.fechafactura <= :FechaFinal and

b.horafactura >= :HoraInicio and
b.HoraFactura <= :HoraFin

Y le mando la hora y la fecha desde Delphi 2007 en el formato que especifique arriba. Para un solo dia me funciona y hasta de un dia para otro, pero si pase de dos dias la consulta no trae nada.

Una mano por favor...

Gracias
Responder Con Cita
  #2  
Antiguo 06-03-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
¿podrías poner cómo lo estas haciendo el delphi?
__________________

Responder Con Cita
  #3  
Antiguo 07-03-2010
El_Raso El_Raso is offline
Miembro
 
Registrado: oct 2003
Posts: 135
Poder: 22
El_Raso Va por buen camino
Código Delphi [-]
               FacturaHORAFACTURA.Value := FormatDateTime('hh:mm ampm',Time);
               FacturaFECHAFACTURA.Value := Date;
Es por el dialecto que estoy usando el 1 y no soporta el tipo TIME
Responder Con Cita
  #4  
Antiguo 07-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Debes usar también campos date para guardar la hora, te será mucho más cómodo, tan sólo que "desprecias" la fecha y te quedas con lo que te interesa, la hora.
Ten en cuenta que los campos date guardan un número tal como así: 38925,12569874
la parte entera, 38925, es la fecha contando desde el 31.12.1899 (creo recordar) y la parte decimal es la hora.
Si lo guardar como un varchar te estás complicando mucho.
Responder Con Cita
  #5  
Antiguo 11-03-2010
elarys elarys is offline
Miembro
 
Registrado: abr 2007
Posts: 94
Poder: 18
elarys Va por buen camino
Se me ocurre que podes probar algo como esto

Fec_Ini := QuotedStr(FormatDateTime('dd/mm/yyyy', Fec_Ini)+' 00:00:00');
Fec_Fin := QuotedStr(FormatDateTime('dd/mm/yyyy', Fec_Fin)+' 23:59:59');

Donde te quedaria con la fecha de hoy por ejemplo
fechafactura >= '11/03/2010 00:00:00'
fechafactura <= '11/03/2010 23:59:59'

Incluso creo que deberia ser entre 00:00:01 y las 00:00:00 pero eso es algo que cada uno maneja y lo ve como quiere

O hacer directamente esto
Fec_Ini := QuotedStr(FormatDateTime('dd/mm/yyyy hh:mm:ss', Fec_Ini));
Fec_Fin := QuotedStr(FormatDateTime('dd/mm/yyyy hh:mm:ss', Fec_Fin));

Última edición por elarys fecha: 11-03-2010 a las 19:53:56.
Responder Con Cita
  #6  
Antiguo 11-03-2010
Xcalibur Xcalibur is offline
Registrado
 
Registrado: ene 2008
Posts: 5
Poder: 0
Xcalibur Va por buen camino
Tienes un problema grave:

ya que la hora está siendo grabada como texto y en formato am/pm (para remate), resulta imposible comparar rangos de horas que crucen las 12:00 m, ejemplo:

06:33 AM es menor que 04:00 PM

pero

'06:33 AM' es MAYOR que '04:00 PM',

¿Como puede ser esto?

Muy sencillo: se están comparando textos (que representan horas pero siguen siendo literales), es decir '0' es igual a '0', pero '06' es MAYOR que '04', sin importar lo que siga a continuación ni el significado que tenga para nosotros.

Soluciones:

1.- Si tienes los fuentes del sistema en uso: (la más fácil)
1.1.- Cambia el formato de la hora grabada a 24 horas (04:00 PM = 16:00)
1.2.- Diseña una aplicación que recorra la tabla y actualice el campo con el nuevo formato.
1.3.- Usa el campo Hora para la consulta (en todo caso deberas hacer 3 clausulas):
WHERE ...
AND ((Fecha = :FechaInicial) AND (Hora >= :HoraInicial))
AND ((Fecha > :FechaInicial) AND (Fecha < :FechaFinal))
AND ((Fecha = :FechaFinal) AND (Hora<= :HoraFinal))

2.- No tienes los fuentes del sistema en uso: (la menos fácil)
2.1.- Agrega un campo (a la tabla Facturas claro) tipo VARCHAR (05) y lo llamas Hora24 o algo así.
2.2.- Crea un Trigger para la tabla "Facturas" que actualice dicho campo con la hora en formato 24H basado en el campo hora que se usa actualmente.
2.3.- Usa el nuevo campo Hora24 para la consulta (en todo caso deberas hacer 3 clausulas):
WHERE ...
AND ((Fecha = :FechaInicial) AND (Hora24 >= :HoraInicial))
AND ((Fecha > :FechaInicial) AND (Fecha < :FechaFinal))
AND ((Fecha = :FechaFinal) AND (Hora24<= :HoraFinal))

Bueno, me cansé.

Suerte...
Responder Con Cita
  #7  
Antiguo 18-03-2010
El_Raso El_Raso is offline
Miembro
 
Registrado: oct 2003
Posts: 135
Poder: 22
El_Raso Va por buen camino
Con el metodo de elarys resolvi la situacion... Gracias a todos!!!
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
Consulta SQL con fecha y hora vpepen SQL 0 10-12-2009 18:11:13
Filtrar consulta por fecha y hora Alejandrina SQL 4 16-06-2008 09:18:10
Consulta MySQL con fecha y hora Adrian Murua SQL 10 19-11-2007 06:32:08
Juntar fecha y hora para consulta SQL Iuconlas SQL 6 21-02-2007 13:16:40
Error en consulta con fecha y hora. Tecnic2 SQL 10 01-10-2005 02:35:25


La franja horaria es GMT +2. Ahora son las 02:10:07.


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