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.