offers.date = CURDATE()
我目前拥有的。
它抢了今天的报价,但我也想抢昨天的订单。
如果不指定昨天的日期,我该怎么做?
要使用 CURDATE 减去或加上一个间隔(例如昨天),您可以使用DATE_ADD函数
SELECT DATE_ADD(CURDATE(), INTERVAL -1 DAY);
因此,在您的情况下,您可以像这样使用它:
WHERE offers.date = CURDATE() OR offers.date = DATE_ADD(CURDATE(), INTERVAL -1 DAY)
或者,您还可以使用 DATE_SUB() 函数,而不是使用负间隔,而是使用相同的间隔但为正。
因此,DATE_ADD(CURDATE(), INTERVAL -1 DAY)
将成为DATE_SUB(CURDATE(), INTERVAL 1 DAY)
在我看来,只说以下内容会更简单
WHERE offers.date >= CURDATE() - INTERVAL 1 day
基于@edwardmp 的回答,我发现这种语法比使用更易读DATE_ADD()
:
current_date() - interval 1 day
此外,我会使用IN
而不是OR
使它更容易与你的 where 子句的其余部分结合起来,而不必过多担心括号:
WHERE offers.date in (current_date(), current_date() - interval 1 day)
它也可能是
offers.date between (current_date() - interval 1 day) and current_date
注意:如果 offer.date 是日期时间值,这将失败,因为 (2017-01-02) < (2017-01-02 12:34:56) 由于 2017-01-02 实际上是 2017-01- 02 00:00:00。