Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

consulta sql hora ms cercana a la hora actual

Estas en el tema de consulta sql hora ms cercana a la hora actual en el foro de SQL Server en Foros del Web. Buenas, Estoy intentado crear un recordatorio con alarma en vb6. El problema es al hacer una consulta sql a access , en la cual me ...
  #1 (permalink)  
Antiguo 22/03/2011, 07:18
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
consulta sql hora ms cercana a la hora actual

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

gracias
  #2 (permalink)  
Antiguo 22/03/2011, 08:43
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: consulta sql hora ms cercana a la hora actual

Si tu base de datos esta en Access, entonces este no es el lugar, debes hacer tu pregunta en http://www.forosdelweb.com/f129/
Si es SQL Server, tu consulta deberia quedar asi:
Código SQL:
Ver original
  1. SELECT h_ini AS pt
  2. FROM alarma
  3. WHERE f_fin>=format(now,'dd/mm/yyyy hh:mm:ss')
  4. ORDER BY h_ini DESC
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 22/03/2011, 15:59
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: consulta sql hora mas cercana a la hora actual

esta consulta me la daria en orden descendente(de mayor a menor)por lo que la respuesta seria:
1---11:00
2----5:00
3----3:00

el problema es que si la hora actual son 10:00 tendria que colocar las 3:00 en segunda posicion ya que es mas cercana a las 10:00 en vez de las 5:00.
  #4 (permalink)  
Antiguo 22/03/2011, 16:21
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: consulta sql hora ms cercana a la hora actual

Por qué no manejas la hora en el campo f_fin?
Si no se puede, debieras manejar las horas en formato de 24 horas.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 23/03/2011, 15:12
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años
Puntos: 0
Respuesta: consulta sql hora ms cercana a la hora actual

el f_fin es una tabla que esta en formato date/time modo general y lo utilizo para descartar todas las entradas con fecha y hora inferiores a la fecha y hora actual.
No entiendo lo que quieres decir con formato 24h en teoria esta en este formato 00:00:00 a las 23:00:00,no?
  #6 (permalink)  
Antiguo 23/03/2011, 15:22
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: consulta sql hora ms cercana a la hora actual

Si fuese como dices, asi deberias tener tu codigo:
Código SQL:
Ver original
  1. SELECT f_fin
  2. FROM alarma
  3. WHERE f_fin >= getdate()
  4. ORDER BY f_fin DESC
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:31.