I have a timestamp column that auto updates on insert/update.
I want to get the rows that have been updated within the last 10 minutes.
SELECT
*
FROM
st开发者_开发问答atus
WHERE
code='myCode'
AND
'stamp_updated'
BETWEEN
NOW()
AND
DATE_ADD(NOW() , INTERVAL - 10 MINUTE)
ORDER BY
stamp_updated DESC
LIMIT 1
Use:
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
Order in the BETWEEN operator matters - you had it backwards.
... 'stamp_updated' BETWEEN NOW() - INTERVAL 10 MINUTE AND NOW() ...
Not sure why you're using the between construct. MySQL can use logical operators on dates, and usually significantly faster. I would use this:
select *
from status
where code='myCode'
and stamp_updated >= DATE_SUB(NOW(), INTERVAL 10 MINUTE)
order by stamp_updated desc
limit 1;
精彩评论