1

我正在尝试检索前天的记录。下面的查询返回昨天的记录...

SELECT * FROM table WHERE `DATE` > DATE_ADD(CURDATE(), INTERVAL -2 DAY) AND `DATE` < CURDATE()

以下查询返回前一天和昨天的记录...

SELECT * FROM table WHERE `DATE` > DATE_ADD(CURDATE(), INTERVAL -3 DAY) AND `DATE` < CURDATE()

虽然我真的很想获得前天的记录。我正在尝试以下查询,但它不起作用......

SELECT * FROM table WHERE `DATE` > DATE_ADD(CURDATE(), INTERVAL -3 DAY) AND `DATE` < DATE_ADD(CURDATE(), INTERVAL -2 DAY)

有人能指出我正确的方向吗?

4

3 回答 3

1

您可以使用更简单的方法,无需 DATE_ADD 或 DATE_SUB :

SELECT * FROM table WHERE DATE = CURDATE() - INTERVAL 2 DAY  

检索昨天的记录:

SELECT * FROM table WHERE DATE = CURDATE() - INTERVAL 1 DAY  

但是,如果您的DATE列是 DATETIME :

SELECT * FROM table WHERE DATE BETWEEN CURDATE() - INTERVAL 2 DAY AND CURDATE() - INTERVAL 1 DAY
于 2013-07-07T03:54:25.560 回答
1

尝试这个:-

SELECT * FROM table WHERE DATE = CURDATE() - 2;

或者

SELECT * FROM table where DATE = DATE_SUB(CURDATE(),INTERVAL 2 DAY);
于 2013-07-07T05:27:01.093 回答
0

这可能有效,或者 >= 和 < 的组合

基本上,您正在寻找一个不存在的日期范围。

SELECT * FROM table WHERE `DATE` = DATE_ADD(CURDATE(), INTERVAL -2 DAY)
于 2013-07-07T03:44:50.540 回答