Código SQL:
Ver original
SELECT personal_asistencia.id_personal AS ID, concat(nombre, ' ', apellido) AS Nombre, time_format(SUM(timediff(salida, entrada)), '%h:%i') AS 'Horas totales', precio_hora AS 'Precio/Hora', round((SUM(timediff(MINUTE, entrada, salida)) * (precio_hora / 60)), 2) AS Pago FROM personal_asistencia INNER JOIN personal ON personal.id = personal_asistencia.id_personal INNER JOIN personal_precio_hora ON personal.id = personal_precio_hora.id_personal WHERE entrada >= '2018-02-01' AND salida <= '2018-02-28' AND personal_asistencia.id_personal = 33
que devuelve el siguiente resultado:
Código SQL:
[/CODE]Ver original
+----+-----------------+---------------+-------------+---------+ | ID | Nombre | Horas totales | Precio/Hora | Pago | +----+-----------------+---------------+-------------+---------+ | 33 | Nombre Apellido | NULL | 100 | 1010.00 | +----+-----------------+---------------+-------------+---------+ 1 ROW IN SET, 1 warning (0.00 sec)
El warning es el siguiente:
Código SQL:
Ver original
+---------+------+------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------+ | Warning | 1292 | Truncated incorrect TIME VALUE: '96600.000000' | +---------+------+------------------------------------------------+
El valor (NULL) de horas totales debería ser 10:06. (Cambié el nombre de la persona porque es una persona real).
De acá saca la info:
Código SQL:
Ver original
+----+-------------+---------------------+---------------------+-----------+-------------+ | id | id_personal | entrada | salida | id_estado | comentarios | +----+-------------+---------------------+---------------------+-----------+-------------+ | 1 | 33 | 2018-02-03 13:18:00 | 2018-02-03 20:06:00 | NULL | | | 3 | 33 | 2018-02-03 20:09:00 | 2018-02-03 20:15:00 | NULL | | | 13 | 33 | 2018-02-11 08:34:00 | 2018-02-11 11:46:00 | NULL | | +----+-------------+---------------------+---------------------+-----------+-------------+
Sin embargo, cuando ejecuto la misma consulta para otro usuario, el 27, obtengo un resultado que no es correcto (debería ser 61:15) pero sin warnings. Aún así, en PHP obtengo el resultado correcto.
Código SQL:
Ver original
+----+------------------------+---------------+-------------+---------+ | ID | Nombre | Horas totales | Precio/Hora | Pago | +----+------------------------+---------------+-------------+---------+ | 27 | Nombre Apellido | 01:15 | 75.6 | 4630.50 | +----+------------------------+---------------+-------------+---------+
Gracias de antemano.