Подтвердить что ты не робот

Разница в MySql между двумя метками времени в секундах?

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

Спасибо

4b9b3361

Ответ 1

Используйте 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

Ответ 2

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

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

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

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

Который может быть изменен, чтобы возвращать ДЕНЬ ГОДНОГО МЕСЯЦА и МИНУТ тоже!

Ответ 3

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

select TIME_TO_SEC('11:10:00')-TIME_TO_SEC('10:20:00')