Ver Mensaje Individual
  #14 (permalink)  
Antiguo 15/06/2009, 14:31
Avatar de gnzsoloyo
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: Calcular horas trabajadas nocturnas MySQL

El problema básico de esta consulta es que tiene que considerar estas situaciones:
1. El horario queda contenido entre 00:00 y 06:00 y la hora de inicio es anterior a la de final.
2. El horario queda contenido entre 00:00 y 06:00 y la hora de inicio es posterior a la de final.
3. El horario queda contenido entre 06:00 y 18:00 y la hora de inicio es anterior a la de final.
4. El horario queda contenido entre 06:00 y 18:00 y la hora de inicio es posterior a la de final.
5. El horario queda contenido entre 18:00 y 24:00 y la hora de inicio es anterior a la de final.
6. El horario queda contenido entre 18:00 y 24:00 y la hora de inicio es posterior a la de final.
7. El horario cruza el límite de 06:00 hs.
8. El horario cruza el límite de 18:00 hs.

La consulta debe calcula el segmento de tiempo correspondiente entre las 00:00 y las 06:00 hs y entre las 18:00 y las 24:00 (23:59:59) en cada uno de los casos, lo que puede implicar que se deban realizar 15 UNION para 16 consultas, antes de sumar los segmentos de tiempo obtenidos.

Creo que habría que buscar o un modelo más eficiente, o validar estos problemas antes de ingresar los registros.
Es posible, incluso, que si en lugar de establecer las horas nocturnas, calculamos sólo las diurnas y las restamos del total trabajado, la consulta se vuelva mucho más sencilla.

¿Qué opinas? Piensalo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)