Cita:
Iniciado por gnzsoloyo
Código sql:
Ver originalSELECT IdHora, SEC_TO_TIME(SUM(HT)) HorasTrabajadas
FROM
(SELECT IdHora, TIME_TO_SEC(SUBTIME('06:00',HorIni)) HT
FROM HorasTrab
WHERE (HoraIni <'06:00' AND HorFin > '06:00')
UNION
SELECT IdHora, TIME_TO_SEC(SUBTIME(HorFin, '18:00')) HT
FROM HorasTrab
WHERE (HoraIni <'18:00' AND Horafin > '18:00')) T1
GROUP BY IdHora;
Muchas gracias por tu colaboración
Lo estoy probando y hice algunas modificaciones
Código SQL:
Ver originalSELECT IdHora, SEC_TO_TIME(SUM(HT)) HorasTrabajadas
FROM
(SELECT IdHora, TIME_TO_SEC(SUBTIME('06:00',HorIni)) HT
FROM HorasTrab
WHERE (HoraIni <'06:00' AND HorFin > '06:00')
UNION
SELECT IdHora, TIME_TO_SEC(SUBTIME(HorFin, '18:00')) HT
FROM HorasTrab
WHERE (HoraIni <'18:00' AND Horafin > '18:00')
UNION
SELECT IdHora, TIME_TO_SEC(SUBTIME(HorFin, '18:00')) HT
FROM HorasTrab
WHERE (HoraIni <'18:00' AND Horafin < '06:00' AND Horafin<>HoraIni)) T1
GROUP BY IdHora;
Pero todavía falta validar horas como los del IdHora 1 y 5 ya que no cumplen las condiciones.
+-----+-----+------+------+-----+
| 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 |
+-----+-----+------+------+-----+
De todas formas estoy eternamente agradecido con tu ayuda.
Seguiré probando y les cuento.
Muchas gracias