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

Comparar dos rangos de horas

Estas en el tema de Comparar dos rangos de horas en el foro de Mysql en Foros del Web. Buen día para todos. Tengo la siguiente tabla. Actividades. idActi horaInicio TIME horaFinal TIME fecha DATE Con los siguientes registros. 1 - 08:00:00 - 08:30:00 ...
  #1 (permalink)  
Antiguo 26/01/2013, 11:01
Avatar de Jorge1801  
Fecha de Ingreso: julio-2011
Ubicación: Colombia
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 2
Comparar dos rangos de horas

Buen día para todos.

Tengo la siguiente tabla.

Actividades.
idActi
horaInicio TIME
horaFinal TIME
fecha DATE

Con los siguientes registros.

1 - 08:00:00 - 08:30:00 - 2013-01-26
2 - 08:00:00 - 08:30:00 - 2013-01-26
3 - 08:30:00 - 09:00:00 - 2013-01-26
4 - 08:30:00 - 09:30:00 - 2013-01-26
5 - 09:30:00 - 11:00:00 - 2013-01-26
6 - 09:30:00 - 10:30:00 - 2013-01-26

Como hago un query que me diga cuantos registros tengo en un rango de hora.

Por ejemplo.

Si coloco que me busque la hora de inicio 08:30:00 y hora final 09:00:00. El resultado con base a los registros anteriores me debe decir que en ese rango de hora se encuentra 2 registros.

Otro ejemplo:

Si coloco que me busque la hora de inicio 09:30:00 y hora final 10:00:00. El resultado con base a los registros anteriores me debe decir que en ese rango de hora se encuentra 2 registros.

Espero que me haya hecho entender.

Muchas gracias.
  #2 (permalink)  
Antiguo 26/01/2013, 12:06
 
Fecha de Ingreso: octubre-2008
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Comparar dos rangos de horas

Select
count(1)
from
Actividades
where
fecha = FECHA_QUE_QUIERES_TENER and
horaInicio between HORA_INICIO_QUE_QUIERES_TENER AND HORA_FINAL_QUE_QUIERES_TENER and
horaFinal between HORA_INICIO_QUE_QUIERES_TENER AND HORA_FINAL_QUE_QUIERES_TENER;

Saludos.
  #3 (permalink)  
Antiguo 26/01/2013, 14:21
Avatar de Jorge1801  
Fecha de Ingreso: julio-2011
Ubicación: Colombia
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Comparar dos rangos de horas

Utilice query que me enviaste e hice la siguiente consulta:

SELECT COUNT(`idActi`),idActi from actividades where `fecha` = '2013-01-26' and
`horaInici` between '08:30:00' and '09:00:00' and `horaFin` between '08:30:00' and '09:00:00';


Pero este query me devuelve un solo registro, es decir el ID 3. En este caso me tendria que devolver tambien el ID 4 ya que esta en el rango de hora de 08:30:00 a 09:00:00
  #4 (permalink)  
Antiguo 26/01/2013, 14:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Comparar dos rangos de horas

No te lo devuelve porque el segundo rango no se cumple. En ese caso la horaFinal es 9:30:00, y tu pides que sea hasta las 9:00:00.
MySQL nunca se equivoca, si el resultado no es el esperado, es que la consulta no está correctamente expresada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 26/01/2013, 15:12
Avatar de Jorge1801  
Fecha de Ingreso: julio-2011
Ubicación: Colombia
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Comparar dos rangos de horas

Como hago en este caso que el registro numero 4 salga, ya que el rango que tiene dicho registro pasa por el rango de 08:30:00 a 09:00:00

Muchas Gracias.
  #6 (permalink)  
Antiguo 26/01/2013, 15:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Comparar dos rangos de horas

El problema es que el registro 4 no pertenece al rango, y sólo modificando el rango incluiría al mismo. Mientras tu rango a buscar esté entre 8.30 y 9:00, el registro jamás saldrá.
Y no solo jamás saldrá, sino que no debe salir.
O sea: O bien consultas un rango distinto, o eliminas el segundo rango, porque no es relevante para la búsqueda.
Con esto quiero decir que tienes dos opciones:
Código MySQL:
Ver original
  1.     COUNT(`idActi`),
  2.     idActi
  3. from actividades
  4.     `fecha` = '2013-01-26'
  5.     and `horaInici` between '08:30:00' and '09:00:00'
  6.     and `horaFin`   between '08:30:00' and '09:30:00';
O bien:
Código MySQL:
Ver original
  1.     COUNT(`idActi`),
  2.     idActi
  3. from actividades
  4.     `fecha` = '2013-01-26'
  5.     and `horaInici` between '08:30:00' and '09:00:00' ;
¿Se entiende?
Debes buscar los rangos correctos para el caso que estás buscando.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 26/01/2013, 15:52
Avatar de Jorge1801  
Fecha de Ingreso: julio-2011
Ubicación: Colombia
Mensajes: 54
Antigüedad: 12 años, 9 meses
Puntos: 2
Respuesta: Comparar dos rangos de horas

Muchas gracias, esas opciones me ayudaron bastantes. Ya pude hacer lo que quería.

Etiquetas: horas, rangos, registros, tabla
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 13:39.