date_add和interval如何在MySQL中运行?

时间:2011-09-23 11:30:16

标签: mysql select where intervals

我尝试从表中选择那些数据时间为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小时的结果。怎么可能?

1 个答案:

答案 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()