MySql разница между двумя временными метками в секундах? - PullRequest
35 голосов
/ 29 ноября 2010

Можно ли рассчитать разницу между двумя временными метками в Mysql и получить результат вывода в секундах?как 2010-11-29 13:16:55 - 2010-11-29 13:13:55 должно дать 180 секунд.

Спасибо

Ответы [ 3 ]

145 голосов
/ 09 ноября 2011

Я не думаю, что принятый ответ является хорошим универсальным решением!

Это связано с тем, что функция UNIX_TIMESTAMP () не работает для дат DATE до 1970-01-01 (и для дат в далеком будущем с использованием 32-битных целых чисел) Это может легко произойти в день рождения многих живых людей.

Лучшее решение:

SELECT TIMESTAMPDIFF(SECOND, '2010-11-29 13:13:55', '2010-11-29 13:16:55')

Который можно изменить так, чтобы он возвращал DAY YEAR MONTH HOUR и MINUTE!

30 голосов
/ 29 ноября 2010

Используйте функцию UNIX_TIMESTAMP , чтобы преобразовать DATETIME в значение в секундах, начиная с 1 января 1970 года:

SELECT UNIX_TIMESTAMP('2010-11-29 13:16:55') - UNIX_TIMESTAMP('2010-11-29 13:13:55') as output

Результат:

output
-------
180

Простой способ справиться, если вы не уверены, какое значение больше другого - используйте функцию ABS :

SELECT ABS(UNIX_TIMESTAMP(t.datetime_col1) - UNIX_TIMESTAMP(t.datetime_col2)) as output
1 голос
/ 06 декабря 2016

Метод TIMESTAMPDIFF работает только с форматом даты и времени. Если вы хотите разницу между двумя значениями, например, '11: 10: 00', минус '10: 20: 00', используйте

select TIME_TO_SEC('11:10:00')-TIME_TO_SEC('10:20:00')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...