计算2个日期之间的时差,以分钟为单位

Aks*_*hay 71 mysql sql timestamp

我的MySQL数据库中有一个时间字段Timestamp,它映射到DATE我的bean中的数据类型.现在我想要一个查询,我可以通过该查询获取数据库中的所有记录,当前时间戳与数据库中存储的时间差大于20分钟.

我该怎么做?

我想要的是:

SELECT * FROM MyTab T WHERE T.runTime - now > 20 minutes
Run Code Online (Sandbox Code Playgroud)

是否有任何MySQL函数,或者在SQL中以任何方式执行此操作?

Nic*_*tti 115

我想你可以使用TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)之类的东西

select * from MyTab T where
TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20
Run Code Online (Sandbox Code Playgroud)


Mou*_*oud 23

ROUND(time_to_sec((TIMEDIFF(NOW(), "2015-06-10 20:15:00"))) / 60);
Run Code Online (Sandbox Code Playgroud)


Dee*_*yan 21

我在今天和数据库日期使用下面的代码。

TIMESTAMPDIFF(MINUTE,T.runTime,NOW()) > 20

根据文档,第一个参数可以是以下任何一个:

MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
Run Code Online (Sandbox Code Playgroud)

  • 由于 %60,您忽略了大于一小时的差异... (3认同)

its*_*eee 6

试试这个:

select * from MyTab T where date_add(T.runTime, INTERVAL 20 MINUTE) < NOW()
Run Code Online (Sandbox Code Playgroud)

注意:如果您使用MySQL DateTime格式,这应该有效.如果您使用的是Unix时间戳(整数),那么它会更容易:

select * from MyTab T where UNIX_TIMESTAMP() - T.runTime > 20*60
Run Code Online (Sandbox Code Playgroud)

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