我的MySQL数据库中有一个时间字段Timestamp,它映射到我的bean中的DATE
数据类型。现在我想要一个查询,通过该查询我可以获取数据库中的所有记录,其中当前时间戳与存储在数据库中的记录之间的差异是> 20分钟。
我该怎么做?
我想要的是:
SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes
是否有任何MySQL函数,或者在SQL中以任何方式执行此操作?
答案 0 :(得分:107)
我认为您可以使用TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)之类的东西
select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
答案 1 :(得分:22)
ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);
答案 2 :(得分:6)
试试这个:
select * from MyTab T where date_add(T.runTime, INTERVAL 20 MINUTE) < NOW()
注意:如果您使用MySQL DateTime格式,这应该有效。如果您正在使用Unix时间戳(整数),那么它将更容易:
select * from MyTab T where UNIX_TIMESTAMP() - T.runTime > 20*60
UNIX_TIMESTAMP()函数返回当前的unix时间戳。
答案 3 :(得分:0)
我在今天和数据库日期使用下面的代码。
(TIMESTAMPDIFF(MINUTE,NOW(),EndDate))%60 as Minutes
在这里,我们可以使用 HOUR (小时-%24), DAY (几天-不需要%)代替 MINUTE >如果需要的话。