sql >> Base de Datos >  >> RDS >> Mysql

MySQL:cómo obtener la diferencia entre dos marcas de tiempo en segundos

Puede usar el TIMEDIFF() y TIME_TO_SEC() funciona de la siguiente manera:

SELECT TIME_TO_SEC(TIMEDIFF('2010-08-20 12:01:00', '2010-08-20 12:00:00')) diff;
+------+
| diff |
+------+
|   60 |
+------+
1 row in set (0.00 sec)

También puede usar UNIX_TIMESTAMP() funciona como @Amber sugirió en otra respuesta:

SELECT UNIX_TIMESTAMP('2010-08-20 12:01:00') - 
       UNIX_TIMESTAMP('2010-08-20 12:00:00') diff;
+------+
| diff |
+------+
|   60 |
+------+
1 row in set (0.00 sec)

Si está utilizando el TIMESTAMP tipo de datos, supongo que UNIX_TIMESTAMP() la solución sería un poco más rápida, ya que TIMESTAMP los valores ya están almacenados como un número entero que representa la cantidad de segundos desde la época (Fuente ). Citando los docs :

Cuando UNIX_TIMESTAMP() se usa en un TIMESTAMP columna, la función devuelve el valor de la marca de tiempo interna directamente, sin conversión implícita de "cadena a marca de tiempo de Unix".

Tenga en cuenta que TIMEDIFF() devuelve el tipo de datos de TIME . TIME los valores pueden oscilar entre '-838:59:59' y '838:59:59' (aproximadamente 34,96 días)