date_add和interval如何在MySQL中运行?

Rom*_*man 0 mysql select where intervals

我尝试从表中选择那些数据时间为1分钟的行.我试着用以下方式做到这一点:

SELECT datetime FROM my_table 
WHERE datetime > date_add( curdate( ) , INTERVAL -1 MINUTE )
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

2011-09-23 02:39:53
2011-09-23 08:10:07
Run Code Online (Sandbox Code Playgroud)

事情显然是错的.有人知道为什么吗?

添加

看起来很奇怪.如果我使用interval -1 hour我得到的结果是4或7个小时(我不应该得到它们),但我会过滤超过14小时的结果.这怎么可能?

Mar*_*rco 5

从过去的一分钟到将来的一分钟:

SELECT * FROM my_table
WHERE datetime BETWEEN
    DATE_ADD(NOW(), INTERVAL -1 MINUTE) AND
    DATE_ADD(NOW(), INTERVAL 1 MINUTE)
Run Code Online (Sandbox Code Playgroud)

从现在到未来一分钟:

SELECT * FROM my_table
WHERE datetime BETWEEN
    NOW() AND
    DATE_ADD(NOW(), INTERVAL 1 MINUTE)
Run Code Online (Sandbox Code Playgroud)

从过去的一分钟到现在:

SELECT * FROM my_table
WHERE datetime BETWEEN
    DATE_ADD(NOW(), INTERVAL -1 MINUTE) AND
    NOW()
Run Code Online (Sandbox Code Playgroud)