MySQL计算时间戳

时间:2013-12-27 12:26:02

标签: mysql datetime pdo

我正在尝试编写一个查询,它将获取当前时间并从中减去时间戳,然后查看余数是否大于字段中的值。

我有以下查询代码:

SELECT *
FROM sessions
WHERE
TIMESTAMPDIFF(SECOND, last_used, NOW())>expiry_time

然而,虽然当前time-last_used之间的差异大于到期时间,但我的查询仍返回0行。

一些示例数据:

last_used: 1388119302
expiry_time: 300

1 个答案:

答案 0 :(得分:4)

正如TIMESTAMPDIFF()所述:

  

返回datetime_expr2datetime_expr1,其中 datetime_expr1 datetime_expr2 是日期或日期时间表达式。

last_used的{​​{1}}值既不是日期也不是日期时间表达式。它似乎是一个UNIX时间,在这种情况下,可以改为:

1388119302

但是,此查询无法从索引中受益。通过将添加的结果存储在自己的索引列中并在上面的查询中使用它,您会更好。您也可以考虑使用MySQL's native temporal data types而不是UNIX时间,以便其日期函数/操作按预期工作。