Расчет разницы во времени между 2 датами в минутах - PullRequest
65 голосов
/ 03 октября 2011

У меня есть поле временной метки в моей базе данных MySQL, которое сопоставлено с типом данных DATE в моем бине. Теперь я хочу запрос, по которому я могу получить все записи в базе данных, для которых разница между текущей меткой времени и той, которая хранится в базе данных, составляет> 20 минут.

Как я могу это сделать?

Что я хочу:

SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes

Существуют ли функции MySQL для этого или какой-либо способ сделать это в SQL?

Ответы [ 4 ]

109 голосов
/ 03 октября 2011

Я думаю, вы могли бы использовать TIMESTAMPDIFF (unit, datetime_expr1, datetime_expr2) что-то вроде

select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
22 голосов
/ 10 июня 2015
ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);
6 голосов
/ 03 октября 2011

Попробуйте это:

select * from MyTab T where date_add(T.runTime, INTERVAL 20 MINUTE) < NOW()

ПРИМЕЧАНИЕ: это должно работать, если вы используете формат MySQL DateTime. Если вы используете Unix Timestamp (целое число), то это будет еще проще:

select * from MyTab T where UNIX_TIMESTAMP() - T.runTime > 20*60

Функция UNIX_TIMESTAMP () возвращает текущую метку времени Unix.

0 голосов
/ 04 августа 2018

Я использую приведенный ниже код для сегодняшней даты и базы данных.

(TIMESTAMPDIFF(MINUTE,NOW(),EndDate))%60 as Minutes

Здесь мы можем использовать ЧАС (для часов -% 24), ДЕНЬ (для дней - нет необходимости в%) вместо МИНУТ , если мы необходимо.

...