Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Resta de tiempo (https://www.clubdelphi.com/foros/showthread.php?t=55755)

Faust 25-04-2008 17:11:12

Resta de tiempo
 
Saludos compañeros foreros.

Mi duda es la siguiente, tengo una tabla en Access con un campo de fecha/hora, mediante una consulta en SQL como puedo hacer para saber con exactitud que registros tienen un tiempo de atraso, es decir cuando esta fecha/hora es mayor a 3 horas de atraso con respecto a la fecha/hora actual del sistema.

Algo así

Código SQL [-]
SELECT * FROM UltimoReporte
WHERE FechaHora < Now - (3 horas)
ORDER BY FechaHora ASC

¿Estas 3 horas como las calculo en Access?

Desde ya muchas gracias por su apoyo.

MaMu 25-04-2008 17:55:25

Enviala como parametro



Código SQL [-]
 
SELECT * FROM UltimoReporte 
WHERE FechaHora < :HoraCalc 
ORDER BY FechaHora ASC

donde:

Código Delphi [-]
Params.ParamsByName('HoraCalc').AsDatetime:=Now()-3;

Saludos

Faust 25-04-2008 18:11:53

Gracias MaMu, pero esto es en conjunto con Delphi, pero directamente en SQL en Access.

En delphi al restar enteros estás restando días, pero para restar tres horas puede ser lo siguiente:

Si un día es un entero, 3 hrs. es un octavo, por lo que debo restar en delphi 1/8 es decir un octavo de un día.

Entonces, Access como toma un día y como puedo restar una fracción de un día...

Voy a experimentar un poco en Access a ver que resulta...

MaMu 25-04-2008 18:16:09

Pero se supone que

Código Delphi [-]
 
Now()-3

son dos variables de tipo Time, una contiene la instantánea de la hora del momento, y la otra 3hs. Lo que hay que hacer, es restar ambas, esa diferencia asimétrica sólo modifica al dia retrasando, en el caso de que la resta se vuelva al dia anterior.

La pauta, es EncodeTime

Saludos

Faust 25-04-2008 18:31:54

Amigo MaMu, creo que esta es la respuesta:
 
Parece que esta función funciona directamente en Access

Código SQL [-]
SELECT *
FROM Gral_UltReporte
WHERE Fecha_Hora < Now - 1/3
ORDER BY Fecha_Hora ASC

El 1/3 es para calcular con atrasos de 8 hrs.

1 día = 24 hrs.
??? = 8 hrs.

Por una regla de tres

Por las pruebas que he hecho, parece que todo va bien y que para Access, al igual que para Delphi, un día es 1.

Alguien puede confirmármelo.


La franja horaria es GMT +2. Ahora son las 00:14:42.

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