Для MySQL: как получить разницу между двумя метками времени в секундах


есть ли способ сделать запрос в MySQL, который даст мне разницу между двумя метками времени в секундах, или мне нужно будет сделать это в PHP? И если да, то как мне это сделать?

4 68

4 ответа:

вы могли бы использовать TIMEDIFF() и TIME_TO_SEC() функции следующим образом:

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)

вы также можете использовать UNIX_TIMESTAMP()

Как насчет "TIMESTAMPDIFF":

SELECT TIMESTAMPDIFF(SECOND,'2009-05-18','2009-07-29') from `post_statistics`

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_timestampdiff

UNIX_TIMESTAMP(ts1) - UNIX_TIMESTAMP(ts2)

если вы хотите, без разницы, добавьте ABS() вокруг выражения.

кроме того, вы можете использовать TIMEDIFF(ts1, ts2) а затем преобразовать результат времени в секундах с TIME_TO_SEC().

отметим, что TIMEDIFF() решение работает только тогда, когда datetimes are менее 35 дней друг от друга! TIMEDIFF() возвращает a TIME тип данных, а максимальное значение времени составляет 838:59:59 часов (=34,96 дней)