我尝试从表中选择那些数据时间为1分钟的行。我试着用以下方式做到这一点:
SELECT datetime FROM my_table
WHERE datetime > date_add( curdate( ) , INTERVAL -1 MINUTE )
这就是我得到的:
2011-09-23 02:39:53
2011-09-23 08:10:07
这显然是错误的。有人知道为什么吗?
ADDED
看起来很奇怪。如果我使用interval -1 hour
我得到了4或7个小时的结果(我不应该得到它们),但我会过滤超过14小时的结果。怎么可能?
答案 0 :(得分:5)
从过去的一分钟到将来的一分钟:
SELECT * FROM my_table
WHERE datetime BETWEEN
DATE_ADD(NOW(), INTERVAL -1 MINUTE) AND
DATE_ADD(NOW(), INTERVAL 1 MINUTE)
从现在到未来一分钟:
SELECT * FROM my_table
WHERE datetime BETWEEN
NOW() AND
DATE_ADD(NOW(), INTERVAL 1 MINUTE)
从过去的一分钟到现在:
SELECT * FROM my_table
WHERE datetime BETWEEN
DATE_ADD(NOW(), INTERVAL -1 MINUTE) AND
NOW()