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

[SOLUCIONADO] Calcular horas trabajadas

Estas en el tema de Calcular horas trabajadas en el foro de Mysql en Foros del Web. Estoy trabajando en un proyecto donde necesito calcular las horas trabajadas por los empleados, dichos registros los tengo en la base de datos con el ...
  #1 (permalink)  
Antiguo 04/06/2014, 16:11
 
Fecha de Ingreso: septiembre-2011
Mensajes: 35
Antigüedad: 12 años, 7 meses
Puntos: 0
Calcular horas trabajadas

Estoy trabajando en un proyecto donde necesito calcular las horas trabajadas por los empleados, dichos registros los tengo en la base de datos con el formato

Id
Cedula
Nombre
Hora (aaaa-mm-dd hh:mm:ss)
Entrada (I-O) Int - Out
Fecha (aaaa-mm-dd)

Cada registro cuenta con una fecha y una hora (Hora) y el tipo de entrada (I-O) dependiendo si entra o sale.

El problema es como puedo calcular la diferencia entre la salida y entrada de un dia y ir sumandolo con los demas dias que el empleado trabajo.

Espero haberme expresado bien.

Saludos y desde ya gracias
  #2 (permalink)  
Antiguo 06/06/2014, 02:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Calcular horas trabajadas

Eso no se resuelve solo con una query, debes controlar cuantos marcages tiene cada trabajador en un dia, tratar los casos donde haya anomalias (entradas sin salidas, o salidas sin entradas....)

Pero supongamos que los trabajadores solo entran y salen una vez por dia y nunca se olvidan de marcar.

Las entradas
Código MySQL:
Ver original
  1. SELECT Cedula,Nombre,Fecha,Hora Entradas
  2. FROM tuTabla
  3. WHERE Entrada="I"

Las salidas
Código MySQL:
Ver original
  1. SELECT Cedula,Nombre,Fecha,Hora Salidas
  2. FROM tuTabla
  3. WHERE Entrada="O"

Todo junto

Código MySQL:
Ver original
  1. SELECT Ent.Cedula,
  2.              Ent.Nombre,
  3.              Ent.Fecha,
  4.              Ent.Entradas,
  5.              Sal.Salidas,
  6.              SUBTIME(Sal.Salidas,Ent.Entradas) TotalHoras
  7.      (SELECT Cedula,Nombre,Fecha,Hora Entradas
  8.        FROM tuTabla
  9.        WHERE Entrada="I") Ent
  10.     (SELECT Cedula,Nombre,Fecha,Hora Salidas
  11.       FROM tuTabla
  12.       WHERE Entrada="O") Sal
  13.    ON Ent.fecha=Sal.Fecha
  14.         AND Ent.Cedula=Sal.Cedula
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 06/06/2014 a las 02:13
  #3 (permalink)  
Antiguo 06/06/2014, 13:10
 
Fecha de Ingreso: septiembre-2011
Mensajes: 35
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Calcular horas trabajadas

Buenas, hace tiempo no usaba el join e inner join la verdad ya me había olvidado jaja la verdad que me funciono perfectamente lo unico que le cambie fue el subtime por
SEC_TO_TIME( TIMESTAMPDIFF(SECOND , Ent.hora, Sal.hora ) ) TotalHoras
que me la facilito gnzsoloyo y quedo perfecta

Muchas gracias de nuevo.

Lo que me gustaría preguntarte es como se haría cuando las personas se olvidan de marcar la salida o por ejemplo marcan 2 veces la entrada con diferencia de 1 seg (ejemplo) o marcan doble salida donde debería una ser entrada. La solución que he encontrado yo (aunque es algo tediosa para el usuario) es modificar y borrar los registros a mano por medio de un formulario que he hecho, pero si hubiese un método para automatizar esto seria espectacular.

Última edición por MatiasFiermarin; 06/06/2014 a las 13:17

Etiquetas: calcular, horas, registro
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 17:35.