Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/02/2018, 09:55
7sistemas
 
Fecha de Ingreso: marzo-2010
Ubicación: Buenos Aires
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 2
TIMEDIFF = NULL -> incorrecto

Buenas gente. Tengo la siguiente consulta:

Código SQL:
Ver original
  1. SELECT personal_asistencia.id_personal AS ID, concat(nombre, ' ', apellido) AS Nombre,
  2. time_format(SUM(timediff(salida, entrada)), '%h:%i') AS 'Horas totales',
  3. precio_hora AS 'Precio/Hora',
  4. round((SUM(timediff(MINUTE, entrada, salida)) * (precio_hora / 60)), 2) AS Pago
  5. FROM personal_asistencia
  6. INNER JOIN personal ON personal.id = personal_asistencia.id_personal
  7. INNER JOIN personal_precio_hora ON personal.id = personal_precio_hora.id_personal
  8. WHERE entrada >= '2018-02-01' AND salida <= '2018-02-28' AND personal_asistencia.id_personal = 33

que devuelve el siguiente resultado:

Código SQL:
Ver original
  1. +----+-----------------+---------------+-------------+---------+
  2. | ID | Nombre          | Horas totales | Precio/Hora | Pago    |
  3. +----+-----------------+---------------+-------------+---------+
  4. | 33 | Nombre Apellido | NULL          |         100 | 1010.00 |
  5. +----+-----------------+---------------+-------------+---------+
  6. 1 ROW IN SET, 1 warning (0.00 sec)
[/CODE]

El warning es el siguiente:

Código SQL:
Ver original
  1. +---------+------+------------------------------------------------+
  2. | Level   | Code | Message                                        |
  3. +---------+------+------------------------------------------------+
  4. | Warning | 1292 | Truncated incorrect TIME VALUE: '96600.000000' |
  5. +---------+------+------------------------------------------------+

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
  1. +----+-------------+---------------------+---------------------+-----------+-------------+
  2. | id | id_personal | entrada             | salida              | id_estado | comentarios |
  3. +----+-------------+---------------------+---------------------+-----------+-------------+
  4. |  1 |          33 | 2018-02-03 13:18:00 | 2018-02-03 20:06:00 |      NULL |             |
  5. |  3 |          33 | 2018-02-03 20:09:00 | 2018-02-03 20:15:00 |      NULL |             |
  6. | 13 |          33 | 2018-02-11 08:34:00 | 2018-02-11 11:46:00 |      NULL |             |
  7. +----+-------------+---------------------+---------------------+-----------+-------------+

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
  1. +----+------------------------+---------------+-------------+---------+
  2. | ID | Nombre                 | Horas totales | Precio/Hora | Pago    |
  3. +----+------------------------+---------------+-------------+---------+
  4. | 27 | Nombre Apellido        | 01:15         |        75.6 | 4630.50 |
  5. +----+------------------------+---------------+-------------+---------+

Gracias de antemano.

Última edición por gnzsoloyo; 12/02/2018 a las 16:51 Razón: Mal etiquetado de codigo. Usar el HIGHLIGHT correcto.