使用MySQL获取CURDATE()和前一天的位置
我知道我现在拥有什么 它今天有报价,但我也想昨天有订单使用MySQL获取CURDATE()和前一天的位置,mysql,Mysql,我知道我现在拥有什么 它今天有报价,但我也想昨天有订单 如何在不指定昨天日期的情况下执行此操作?要使用CURDATE减号或加号间隔(例如,昨天),可以使用此函数 因此,在您的情况下,您可以这样使用它: SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY); 您还可以选择使用DATE_SUB()函数,并使用相同的时间间隔(但为正)代替负时间间隔 因此,DATE\u ADD(CURDATE(),INTERVAL-1天)将变成DATE\u SUB(CURDATE()
如何在不指定昨天日期的情况下执行此操作?要使用CURDATE减号或加号间隔(例如,昨天),可以使用此函数 因此,在您的情况下,您可以这样使用它:
SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY);
您还可以选择使用DATE_SUB()函数,并使用相同的时间间隔(但为正)代替负时间间隔
因此,
DATE\u ADD(CURDATE(),INTERVAL-1天)
将变成DATE\u SUB(CURDATE(),INTERVAL-1天)
基于@edwardmp的答案,我发现这个语法比使用DATE\u ADD()稍微可读一些:
另外,我将在
中使用而不是或
,以便更容易地将其与where子句的其余部分结合起来,而不必太担心括号:
current_date() - interval 1 day
在我看来,只说以下几句会更简单
WHERE offers.date in (current_date(), current_date() - interval 1 day)
也可能是
WHERE offers.date >= CURDATE() - INTERVAL 1 day
注意:如果offers.date是日期时间值,则此操作将失败,因为(2017-01-02)<(2017-01-02 12:34:56),因为2017-01-02实际上是2017-01-02 00:00 (CURDATE()-1)有什么错:它可以正常工作。@murtaza.webdev在所有情况下都不起作用:如果CURDATE()是6月1日,减去1将导致6月0日。。看见
WHERE offers.date in (current_date(), current_date() - interval 1 day)
WHERE offers.date >= CURDATE() - INTERVAL 1 day
offers.date between (current_date() - interval 1 day) and current_date