Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/08/2011, 09:13
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Calculo con fechas, fecha inicio y fecha fin

Hola Brahyam:

En tu post no lo mencionas, pero me imagino que tos campos fecha_ini y fecha_fin son de tipo DATETIME. Para obtener las horas laboradas por un empleado en un día simplemente tendrías que restar las fechas y utilizar la función HOUR, agrupando por empleado y por fecha, más o menos así:

Código MySQL:
Ver original
  1. mysql> create table TuTabla (empleado_id int, fecha_ini datetime,
  2.     -> fecha_fin datetime);
  3. Query OK, 0 rows affected (0.11 sec)
  4.  
  5. mysql> INSERT INTO TuTabla VALUES
  6.     -> (1, '2011-08-16 07:00', '2011-08-16 09:00'),
  7.     -> (1, '2011-08-16 11:00', '2011-08-16 13:00'),
  8.     -> (1, '2011-08-16 14:00', '2011-08-16 17:00'),
  9.     -> (2, '2011-08-16 07:00', '2011-08-16 13:00'),
  10.     -> (2, '2011-08-16 14:00', '2011-08-16 17:00');
  11. Query OK, 5 rows affected (0.06 sec)
  12. Records: 5  Duplicates: 0  Warnings: 0
  13.  
  14. mysql>  SELECT empleado_id, SUM(HOUR(fecha_fin - fecha_ini)) horas_trabajadas
  15.     ->  FROM TuTabla GROUP BY empleado_id, DATE(fecha_ini);
  16. +-------------+------------------+
  17. | empleado_id | horas_trabajadas |
  18. +-------------+------------------+
  19. |           1 |                7 |
  20. |           2 |                9 |
  21. +-------------+------------------+
  22. 2 rows in set (0.00 sec)


Ahora bien, esta consulta tiene el supuesto que la hora de inicio y fin corresponden al mismo día, es decir, no funcionaría por ejemplo para un turno nocturno, donde la fecha de inicio es por la noche y la fecha de fin es por el día, pero de un día distinto. Si en tu proyecto manejas este tipo de casos deberás tratarlos de manera especial

Dale un vistazo al código y nos comentas.

Saludos
Leo.