计算两个date之间的时间差(分钟)

我在我的MySQL数据库中有一个Timestamp字段,它映射到我的bean中的DATE数据types。 现在我想要一个查询,通过这个查询我可以获取数据库中当前时间戳与数据库中存储的时间差超过20分钟的所有logging。

我该怎么做?

我想要的是:

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

有没有任何MySQL的function呢,或者有什么办法在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时间戳(整数),那么它会更容易:

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

UNIX_TIMESTAMP()函数返回当前的unix时间戳。