MySQL: разница между двумя метками времени в секундах?
Возможно ли вычислить разницу между двумя временными отметками в MySQL и получить результат в секундах?
Например, выражение 2010-11-29 13:16:55 - 2010-11-29 13:13:55
должно возвращать 180 секунд.
Спасибо.
2 ответ(ов)
Я не считаю, что принятый ответ является универсальным решением!
Это связано с тем, что функция UNIX_TIMESTAMP() не работает с датами до 1970-01-01 (а также с датами в далеком будущем, если использовать 32-битные целые числа). Это может легко произойти, например, для даты рождения многих живущих людей.
Лучшим решением будет следующее:
SELECT TIMESTAMPDIFF(SECOND, '2010-11-29 13:13:55', '2010-11-29 13:16:55')
Эту конструкцию можно модифицировать, чтобы возвращать разницу в днях, годах, месяцах, часах и минутах!
Метод TIMESTAMPDIFF
работает только с форматом datetime. Если вам необходимо вычислить разницу между двумя временем, например, '11:10:00' и '10:20:00', вы можете воспользоваться следующим запросом:
SELECT TIME_TO_SEC('11:10:00') - TIME_TO_SEC('10:20:00');
Этот запрос преобразует строки времени в секунды и вычисляет их разницу.
SQL: выбрать только строки с максимальным значением в столбце
Когда использовать одинарные кавычки, двойные кавычки и обратные кавычки в MySQL
Удаление с использованием JOIN в MySQL
MySQL 1062 - Дубликат значения '0' для ключа 'PRIMARY'
java.sql.SQLException: Не найден подходящий драйвер для jdbc:mysql://localhost:3306/dbname