我的MySQL数据库中有一个Timestamp字段,它映射到DATE
bean中的数据类型。现在,我想要一个查询,通过该查询可以获取数据库中的所有记录,这些记录的当前时间戳和存储在数据库中的时间戳之间的差异> 20分钟。
我该怎么做?
我想要的是:
SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes
是否有任何MySQL函数可用于此目的,或有任何方法可以在SQL中做到这一点?
Answers:
我认为您可以使用TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)类似
select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
试试这个:
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时间戳。
T.runTime < DATE_SUB(NOW(), INTERVAL 20 MINUTES)
。
t.col
,则t.col < func(const)
应该比invfunc(t.col) < const
数据库可以预先计算右侧并使用索引的速度更快。
INTERVAL 20 MINUTE
。我无法再编辑我的评论来解决它,但是我可以(并且刚刚)编辑答案。