Ver Mensaje Individual
  #9 (permalink)  
Antiguo 14/06/2009, 17:59
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

Bueno, veamos el caso: No hay una consulta que te devuelva exactamente un horario "nocturno", pero se puede considerar que si tenemos las horas límite, podemos calcular el espacio de tiempo que queda entre el punto de entrada y las cotas usadas.
Para esto hay que calcular los dos segmentos (inferior y superior) por separado.
Caso:
Cita:
+-----+-----+------+------+-----+
| IdHora | HorIni | HorFin | Hortra | DiaTra |
+-----+-----+------+------+-----+
| 1 | 11:00 | 10:00 | 23:00 | 2001-02-04 |
| 2 | 02:00 | 14:00 | 12:00 | 2005-06-14 |
| 3 | 14:30 | 16:30 | 02:00 | 2007-04-09 |
| 4 | 05:00 | 11:00 | 06:00 | 2004-08-05 |
| 5 | 12:00 | 10:00 | 22:00 | 2006-10-20 |
+-----+-----+------+------+-----+
Yo lo pondría así:
Código sql:
Ver original
  1. SELECT IdHora, SEC_TO_TIME(SUM(HT)) HorasTrabajadas
  2. FROM
  3.    (SELECT IdHora, TIME_TO_SEC(SUBTIME('06:00',HorIni)) HT
  4.    FROM HorasTrab
  5.    WHERE (HoraIni <'06:00' AND HorFin > '06:00')
  6.    UNION
  7.    SELECT IdHora, TIME_TO_SEC(SUBTIME(HorFin, '18:00'))  HT
  8.    FROM HorasTrab
  9.    WHERE (HoraIni <'18:00' AND Horafin > '18:00')) T1
  10. GROUP BY IdHora;
Prueba y veremos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)