如何在查询中的MYSQL日期中增加天数

Meg*_*rma 1 mysql datetime

我试图在查询中将5天添加到MYSQL中的日期。这是我所做的:

SELECT * FROM sales INNER JOIN partner on user_id = idpartner WHERE DATE((end_date) + 5) >= DATE(NOW()) ORDER BY end_date ASC LIMIT 0,50000

但是,这并未显示已结束的销售清单。有人可以告诉我我在哪里犯错。

O. *_*nes 5

好像您要end_date晚于五天前的行。

最好的方法是

 WHERE end_date >= CURDATE() - INTERVAL 5 DAY
Run Code Online (Sandbox Code Playgroud)

将整数添加到日期的业务在MySQL中不起作用(这是Oracle的事情)。因此,您需要使用INTERVAL n unit语法。

您会注意到,我上面的WHERE子句在功能上等效于

 WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())
Run Code Online (Sandbox Code Playgroud)

但是,出于两个原因,第一种方法优于第二种方法。

  1. 如果您end_date在WHERE子句中提到而未将其包装在计算中,则您的查询可以利用该列上的索引,并且运行速度更快。
  2. DATE(NOW())CURDATE()均指今日(午夜)的第一刻。但是CURDATE()有点简单。