Ответ 1
Я думаю, вы можете использовать TIMESTAMPDIFF (unit, datetime_expr1, datetime_expr2) что-то вроде
select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
У меня есть поле времени Timestamp в моей базе данных MySQL, которое сопоставляется с типом DATE
в моем bean. Теперь мне нужен запрос, по которому я могу получить все записи в базе данных, для которых разница между текущей меткой времени и записью, хранящейся в базе данных, составляет > 20 минут.
Как я могу это сделать?
Я хочу:
SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes
Существуют ли какие-либо функции MySQL для этого или любой способ сделать это в SQL?
Я думаю, вы можете использовать TIMESTAMPDIFF (unit, datetime_expr1, datetime_expr2) что-то вроде
select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);
Попробуйте следующее:
select * from MyTab T where date_add(T.runTime, INTERVAL 20 MINUTE) < NOW()
ПРИМЕЧАНИЕ. Это должно работать, если вы используете формат MySQL DateTime. Если вы используете временную метку Unix (integer), то это будет еще проще:
select * from MyTab T where UNIX_TIMESTAMP() - T.runTime > 20*60
Функция UNIX_TIMESTAMP() возвращает текущую временную метку unix.
Я использую приведенный ниже код на сегодня и дату базы данных.
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
Здесь мы можем использовать ЧАС(для часов), ДЕНЬ(для дней) вместо МИНУТЫ, если нам нужно.