timestampdiff timediff obtener horas hora funciones formato fechas fecha entre ejemplos calcular php mysql timestamp

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



timestampdiff mysql (4)

¿Existe alguna manera de hacer una consulta en MySQL que me dé la diferencia entre dos marcas de tiempo en segundos o tendré que hacer eso en PHP? Y si es así, ¿cómo haré eso?



Tenga en cuenta que la solución TIMEDIFF() solo funciona cuando las fechas están separadas por menos de 35 días . TIMEDIFF() devuelve un tipo de datos TIME , y el valor máximo para TIME es 838: 59: 59 horas (= 34,96 días)


Puede usar las TIMEDIFF() y TIME_TO_SEC() 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 podría usar la función UNIX_TIMESTAMP() como @Amber sugerida 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 tipo de datos TIMESTAMP , supongo que la solución UNIX_TIMESTAMP() sería un poco más rápida, ya que los valores TIMESTAMP ya están almacenados como un número entero que representa el número de segundos desde la época ( Source ). Citando los UNIX_TIMESTAMP() :

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

Tenga en cuenta que TIMEDIFF() devuelve el tipo de datos de TIME . TIME valores TIME pueden variar de ''-838: 59: 59'' a ''838: 59: 59'' (aproximadamente 34.96 días)


UNIX_TIMESTAMP(ts1) - UNIX_TIMESTAMP(ts2)

Si desea una diferencia sin signo, agregue un ABS() alrededor de la expresión.

Alternativamente, puede usar TIMEDIFF(ts1, ts2) y luego convertir el resultado del tiempo en segundos con TIME_TO_SEC() .