Как вычесть использование SQL в MYSQL между двумя значениями даты и времени и получить результат в минутах или секундах? - PullRequest
40 голосов
/ 11 июня 2009

Я хочу вычесть между двумя значениями даты и времени, используя SQL в MySQL, чтобы получить интервал в минутах или секундах. Есть идеи? Я хочу выполнить SQL-запрос, который извлекает данные из базы данных, которые вошли в систему через 10 минут.

Ответы [ 5 ]

60 голосов
/ 11 июня 2009

Существуют функции TIMEDIFF (expr1, expr2), которые возвращают значение expr1-expr2, и TIME_TO_SEC (expr3), которые выражают expr1 в секундах.

Обратите внимание, что expr1 и expr2 являются значениями даты и времени, а expr3 - только значениями времени.

Проверьте эту ссылку для получения дополнительной информации.

56 голосов
/ 11 июня 2009

TIMESTAMPDIFF аналогичен TIMEDIFF, о котором говорит Мэтью, за исключением того, что он возвращает разницу между двумя датами и временем в любых единицах измерения (секунды, минуты, часы и т. Д.).

Например,

SELECT TIMESTAMPDIFF(MINUTE,LogOutTime,LogInTime) AS TimeLoggedIn
FROM LogTable

Возвращает количество минут, когда пользователь вошел в систему (при условии, что вы хранили подобные вещи в такой таблице).

10 голосов
/ 11 июня 2009

Я бы сделал это следующим образом - получить там, где последнее действие прошло в течение 10 минут с этого момента

SELECT * FROM table WHERE last_activity >= DATE_SUB(NOW(), INTERVAL 10 MINUTE)
0 голосов
/ 25 июня 2009
SELECT TIMESTAMPDIFF(MINUTE,LogOutTime,LogInTime) AS TimeLoggedIn
FROM LogTable

Этот пример разрушит время, если его использовать с использованием военного времени. Поэтому для подсчета миллиметрового времени я не рекомендую его, поскольку он выводит отрицательные значения.

0 голосов
/ 11 июня 2009

Вы можете попробовать привести их к метке времени Unix и взять разницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...