我正在尝试编写一个查询,它将获取当前时间并从中减去时间戳,然后查看余数是否大于字段中的值。
我有以下查询代码:
SELECT *
FROM sessions
WHERE
TIMESTAMPDIFF(SECOND, last_used, NOW())>expiry_time
然而,虽然当前time-last_used之间的差异大于到期时间,但我的查询仍返回0行。
一些示例数据:
last_used: 1388119302 expiry_time: 300
答案 0 :(得分:4)
正如TIMESTAMPDIFF()
所述:
返回
datetime_expr2 – datetime_expr1
,其中datetime_expr1
和datetime_expr2
是日期或日期时间表达式。
last_used
的{{1}}值既不是日期也不是日期时间表达式。它似乎是一个UNIX时间,在这种情况下,可以改为:
1388119302
但是,此查询无法从索引中受益。通过将添加的结果存储在自己的索引列中并在上面的查询中使用它,您会更好。您也可以考虑使用MySQL's native temporal data types而不是UNIX时间,以便其日期函数/操作按预期工作。