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)
-   -   Consulta con TIMESTAMP no devuelve nada (https://www.clubdelphi.com/foros/showthread.php?t=47928)

subzero 11-09-2007 13:22:56

Consulta con TIMESTAMP no devuelve nada
 
Hola a todos.

Bueno, tengo el siguiente inconveniente, he realizado una consulta la cual como parametro le estoy enviando la fecha y la hora pero no me devuelve valor alguno, cabe anotar que el campo al que estoy haciendo referencia en esta consulta ya se encuentran definidos previamente como "timestamp". El caso es que si realizo una consulta tal como muestro a continuación me trae información perteneciente a esa fecha en particular

Código SQL [-]
SELECT * FROM IEGRESOS
WHERE (CAST(FECHA AS DATE) = '09/10/2007')

Pero cuando trato de hacerlo así

Código SQL [-]
SELECT * FROM IEGRESOS
WHERE (CAST(FECHA AS DATE) = '09/10/2007')
AND (CAST(FECHA AS TIME) = '10:08:09 p.m.')

No me trae valores. Es importante que en la consulta se tenga en cuenta la fecha y hora debido a que en un día se pueden ingresar N registros.

Otra forma que utilice fue la siguiente

Código SQL [-]
SELECT * FROM IEGRESOS
WHERE (CAST(FECHA AS Timestamp) = '09/10/2007 20:08:09')

Y no me trae ningúna valor, y opte por realizarlo no que el formato de hora anteriomente mostrado sino como me aparece en la tabla.

Código SQL [-]
SELECT * FROM IEGRESOS
WHERE (CAST(FECHA AS Timestamp) = '09/10/2007 10:08:09 p.m.')

Y me muestra un "error de conversión de string".


Agradezco si alguien conoce la manera de cómo poder incluir la fecha y la hora en una consulta que contenga el campo de referencia como formato timestamp

gluglu 11-09-2007 13:45:22

Yo lo tengo hecho así y me funciona perfectamente :

Código SQL [-]
Select * from IEGRESOS where FECHA = 'mm/dd/yyyy hh:nn:ss'

siendo FECHA un campo del tipo TimeStamp y sustituyendo mm/dd/yyyy hh:nn:ss por la fecha y la hora correspondiente (encerrada entre comillas).

Nota : Presta atención que al menos en Interbase (yo utilizo la Ver 7.5), el formato de fecha tiene que ser primero el mes y después el día.

Saludos ;)

gluglu 11-09-2007 13:49:07

... y si lo que te interesa es los datos de una fecha (o un margen de fechas) sin importar la hora, yo lo que hago es :

Código SQL [-]
Select * from IEGRESOS
where FECHA >= 'mm/dd/yyyy 00:00:00'
and FECHA <= 'mm/dd/yyyy 23:59:59'

volviendo a sustitur mm/dd/yyyy por la fecha correspodiente (o margen de fechas). ;)

duilioisola 11-09-2007 13:59:28

Firebird también utiliza la fecha con formato mm/dd/yyyy hh:mm:ss

También puedes utilizar :

Código SQL [-]
Select * from IEGRESOS
where FECHA between 'mm/dd/yyyy 00:00:00' and 'mm/dd/yyyy 23:59:59'

subzero 11-09-2007 15:27:48

De antemano agradezco a todos su interes por colaborar y darme alguna idea a este inconveniente que acabo de postear, sin embargo, mi necesidad se enceuntra en que necesito un registro el cual contiene una fecha y hora especifica. Para más datos estoy trabajando con Firebird 2.0.

PD: Intente lo anterior pero sigue sin mostrarme nada aun.

gluglu 11-09-2007 15:54:43

Pues insisto :

Ahora mismo estoy trabajando con datos, y uno de mis campos está creado como TimeStamp

Esta consulta
Código SQL [-]
Select * from MiTabla where CREADO = '09/11/2007 14:56:38'
me devuelve correctamente el dato que busco, y que acabo de crear hoy a las 14:56:38.

:p

subzero 11-09-2007 16:11:16

"gluglu", voy a revisar la verdad es que la consulta la he hecho utilizando "cast()" como te puede dar cuenta.... vamos a ver que me genera si no se lo incluyo y les cuento... gracias!

subzero 11-09-2007 19:40:22

bueno realice la consulta tal como me habian indicado pero aun sigue sin traerme ningún valor, la consulta es la siguiente

Código SQL [-]
SELECT *
FROM IEGRESOS
WHERE (FECHA = '09/10/2007 22:08:09')

gluglu 11-09-2007 19:59:16

La consulta la generas en tiempo de ejecución ?? Si es así podrías poner el código para mayor claridad.

Supongo que estarás seguro que existen registros que cumplen esa condición. Has probado ejecutar dicha consulta con IBExpert o IBConsole ?

subzero 11-09-2007 21:12:51

La consulta la estoy ejecutando directamente por medio del EMS Interbase/Firebird Manager..... y aun nada......

subzero 12-09-2007 04:51:06

Bueno probando y probando un poco se me ocurrio lo siguiente

Código SQL [-]
SELECT * FROM IEGRESOS
WHERE (cast(FECHA as date) = '09/10/2007')
and (cast(FECHA as time) > '22:08:09')

Me muestra los registros que como pueden ver se ingresaron este dia duranta o despues de la hora escrita. Pero sucede que cuando le digo que solo me traiga esa hora en particular

Código SQL [-]
SELECT * FROM IEGRESOS
WHERE (cast(FECHA as date) = '09/10/2007')
and (cast(FECHA as time) = '22:08:09')

No me muestra nada, no se si luego de :09 se muestren milesimas o segundos o halgo parecido......Seguire buscando a ver si quizas dandole un formato de busqueda a la hora pueda hacer algo..... creo falta poco


La franja horaria es GMT +2. Ahora son las 12:50:42.

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