我有一个时间戳列,可以自动更新插入/更新。
我想获取过去10分钟内已更新的行。
SELECT
*
FROM
status
WHERE
code='myCode'
AND
'stamp_updated'
BETWEEN
NOW()
AND
DATE_ADD(NOW() , INTERVAL - 10 MINUTE)
ORDER BY
stamp_updated DESC
LIMIT 1
答案 0 :(得分:22)
使用:
SELECT *
FROM status
WHERE code = 'myCode'
AND `stamp_updated` BETWEEN DATE_SUB(NOW() , INTERVAL 10 MINUTE)
AND NOW()
ORDER BY stamp_updated DESC
LIMIT 1
BETWEEN操作员的订单很重要 - 你已经倒退了。
答案 1 :(得分:7)
... 'stamp_updated' BETWEEN NOW() - INTERVAL 10 MINUTE AND NOW() ...
答案 2 :(得分:3)
不确定为什么要使用之间的构造。 MySQL可以在日期使用逻辑运算符,通常速度更快。我会用这个:
select *
from status
where code='myCode'
and stamp_updated >= DATE_SUB(NOW(), INTERVAL 10 MINUTE)
order by stamp_updated desc
limit 1;