我试图在查询中将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
但是,这并未显示已结束的销售清单。有人可以告诉我我在哪里犯错。
好像您要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)
但是,出于两个原因,第一种方法优于第二种方法。
end_date在WHERE子句中提到而未将其包装在计算中,则您的查询可以利用该列上的索引,并且运行速度更快。DATE(NOW())并CURDATE()均指今日(午夜)的第一刻。但是CURDATE()有点简单。| 归档时间: |
|
| 查看次数: |
1951 次 |
| 最近记录: |