MySQL TIMEDIFF() La función devuelve la diferencia entre dos valores de hora o fecha y hora.
La forma en que funciona es que proporciona los dos valores para comparar y TIMEDIFF() resta el segundo valor del primero y luego devuelve el resultado como un valor de tiempo.
Sintaxis
La sintaxis es así:
TIMEDIFF(expr1,expr2)
Donde expr1 y expr2 son los dos valores a comparar. El valor de retorno es expr2 restado de expr1 .
Ejemplo básico
Aquí hay un ejemplo para demostrarlo.
SELECT TIMEDIFF('11:35:25', '10:35:25');
Resultado:
+----------------------------------+
| TIMEDIFF('11:35:25', '10:35:25') |
+----------------------------------+
| 01:00:00 |
+----------------------------------+
Tiempo transcurrido
El valor de tiempo puede representar el tiempo transcurrido, por lo que no se limita a menos de 24 horas.
SELECT TIMEDIFF('500:35:25', '10:35:25');
Resultado:
+-----------------------------------+
| TIMEDIFF('500:35:25', '10:35:25') |
+-----------------------------------+
| 490:00:00 |
+-----------------------------------+
Diferencia horaria negativa
Si el segundo valor es mayor que el primero, obtendrá un valor negativo para la diferencia horaria. Esto es perfectamente válido.
SELECT TIMEDIFF('10:35:25', '500:35:25');
Resultado:
+-----------------------------------+
| TIMEDIFF('10:35:25', '500:35:25') |
+-----------------------------------+
| -490:00:00 |
+-----------------------------------+
Valores de fecha y hora
Aquí hay un ejemplo que usa valores de fecha y hora como argumentos.
SELECT TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25');
Resultado:
+--------------------------------------------------------+
| TIMEDIFF('2021-02-01 10:35:25', '2021-01-01 10:35:25') |
+--------------------------------------------------------+
| 744:00:00 |
+--------------------------------------------------------+
Tenga en cuenta que ambos argumentos deben ser del mismo tipo. Por lo tanto, no puede tener un valor de tiempo para el primero y un valor de fecha y hora para el segundo (y viceversa).
También tenga en cuenta que el tipo de datos de tiempo solo puede estar en el rango -838:59:59 a 838:59:59 . Por lo tanto, lo siguiente no funciona:
SELECT TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25');
Resultado:
+--------------------------------------------------------+
| TIMEDIFF('2000-01-01 10:35:25', '2021-01-01 10:35:25') |
+--------------------------------------------------------+
| -838:59:59 |
+--------------------------------------------------------+
1 row in set, 1 warning (0.00 sec)
En este caso, obtenemos un resultado incorrecto y una advertencia.