MySql如何在Between子句中使用DATE_SUB

时间:2012-03-29 13:17:32

标签: mysql

我在使用DATE_SUB for DateTime字段时遇到问题。我想使用这样的查询:

SELECT
    * 
FROM 
    SellBySalesman 
WHERE 
    userid=37 and 
    sellingDate BETWEEN CURDATE() AND DATE_SUB(CURDATE(), INTERVAL 7 DAY)

3 个答案:

答案 0 :(得分:13)

我不确定你得到了什么错误,但这不起作用。原因是你的BETWEEN子句中的参数是相反的。 BETWEEN要求第一个参数为最小值,第二个参数为最大值。 DATE_SUB会从提供的日期中减去间隔,使其小于当前日期。

尝试这样的事情:

SELECT
    * 
FROM 
    SellBySalesman 
WHERE 
    userid=37 and 
    sellingDate BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()

答案 1 :(得分:1)

你必须像这样颠倒中间的顺序:

SELECT
    * 
FROM 
    SellBySalesman 
WHERE 
    userid=37 and 
    sellingDate BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE();

答案 2 :(得分:1)

你的BETWEEN值是倒退的。

你需要先得到一个较小的值:“BETWEEN 1和10”而不是“BETWEEN 10和1”。

所以,在你的情况下,你想要“BETWEEN DATE_SUB(CURDATE(),INTERVAL 7 DAY)和CURDATE()”