SQL - consulta de hora mas cercana a la hora actual

 
Vista:

consulta de hora mas cercana a la hora actual

Publicado por reksoz (4 intervenciones) el 22/03/2011 11:31:16
Buenas,

Estoy intentado crear un recordatorio con alarma en vb6. El problema es al hacer una consulta sql a access , en la cual me tendria que ordenar las horas de forma mas cercana a la actual :

he probado con la sentencia:
select h_ini as pt from alarma where f_fin>=format(now,'dd/mm/yyyy hh:mm:ss') order by datediff("m",h_ini,format(now,"hh:mm:ss"))

tal como lo entiendo yo esta pregunta seria:

seleciona las horas donde la fechas>= que la fechas/horas actual y ordenalas por diferencia menor de hora entre el registro y la actual.

el problema es que partiendo de tres tres registros siendo la hora actual 10:00:00 de la mañana

reg1---3:00:00 siendo las tres de la mañana
reg2---5:00:00 siendo las 5 de la mñana
reg3---11:00:00 seindo las 11 de la mañana

no me da el orden correcto, que deberia ser de menor a mayor con respecto a las 10.00:00(hora actual):

---11:00:00
-----3:00:00
-----5:00:00


si alguna alma caritativame pudiera ayudarme se lo agradeceria eternament

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

consulta de hora mas cercana a la hora actual

Publicado por Leonardo Josué (1173 intervenciones) el 23/03/2011 19:40:53
Hola reksoz. No tengo mucha experiencia con Access, pero deberías de verificar cómo funciona tu función DATEDIFF, ya que algunos manejadores de BD regresan números negativos cuando la fecha inicial es menor a la fecha final... puedes simplemente hacer esta prueba

select h_ini as pt,
datediff("m", h_ini, format(now,"hh:mm:ss")),
datediff("m",format(now,"hh:mm:ss"), h_ini)
from alarma where f_fin>=format(now,'dd/mm/yyyy hh:mm:ss')

Verifica qué valores te está regresando y así determines cuál es el orden que necesitas.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta de hora mas cercana a la hora actual

Publicado por reksoz (4 intervenciones) el 23/03/2011 22:08:24
muchas gracias lo probare
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta de hora mas cercana a la hora actual

Publicado por reksoz (4 intervenciones) el 28/03/2011 12:32:33
select h_ini as pt, datediff("n", h_ini, format(now,"hh:mm:ss")),datediff("n",format(now,"hh:mm:ss"), h_ini) from atm_master where f_fin>=format(now,'dd/mm/yyyy hh:mm:ss')

me da esto:

pt Expr1001 Expr1002
-----------------------------+-------------------+------------------
1) 30/12/1899 3:15:00 652 -652
2) 30/12/1899 5:36:00 511 -511
3) 30/12/1899 14:54:00 -47 47

como puede ser que partiendo que now= 28/3/2011 14:10:00, el primer registro a las 3:00 me de una diferencia mas grande que a las 5:00 ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

consulta de hora mas cercana a la hora actual

Publicado por reksoz (4 intervenciones) el 28/03/2011 12:53:21
lo acabo de probar de otra manera:
select format(h_ini,"hh:nn:ss") as pt, datediff("n", h_ini, format(now,"hh:nn:ss")) as rs1,datediff("n",format(now,"hh:nn:ss"), h_ini)as rs2 from atm_master where f_fin>=format(now,'dd/mm/yyyy hh:mm:ss') order by h_ini desc


donde (now)=14:42
resultado:
pt rs1 rs2
14:54:00 -13 13
04:15:00 626 -626
04:14:00 627 -627
el tercer registro me da mas diferencia siendo mas pequeño que el segundo
alguien entiende algo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar