MySql如何在Between子句中使用DATE_SUB

use*_*868 5 mysql

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

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

Bug*_*ill 13

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

尝试这样的事情:

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


jor*_*deu 1

你必须颠倒之间的顺序,如下所示:

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