Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:como obter a diferença entre dois timestamps em segundos


Você pode usar o TIMEDIFF() e o TIME_TO_SEC() funções da seguinte forma:
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)

Você também pode usar o UNIX_TIMESTAMP() funcionar como @Amber sugerido em outra resposta:
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)

Se você estiver usando o TIMESTAMP tipo de dados, acho que o UNIX_TIMESTAMP() solução seria um pouco mais rápida, pois TIMESTAMP os valores já são armazenados como um inteiro representando o número de segundos desde a época (Fonte ). Citando os documentos :

Quando UNIX_TIMESTAMP() é usado em um TIMESTAMP coluna, a função retorna o valor de timestamp interno diretamente, sem conversão implícita “string-to-Unix-timestamp”.

Tenha em mente que TIMEDIFF() tipo de dados de retorno de TIME . TIME os valores podem variar de '-838:59:59' a '838:59:59' (aproximadamente 34,96 dias)