PDA

Ver la Versión Completa : Consulta con TIMESTAMP no devuelve nada


subzero
11-09-2007, 13:22:56
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

SELECT * FROM IEGRESOS
WHERE (CAST(FECHA AS DATE) = '09/10/2007')


Pero cuando trato de hacerlo así

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

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.

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 :

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 :

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 :


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
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

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

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

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