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)