Sql CURDATE()下个月无法运行

时间:2018-04-28 06:56:55

标签: php mysql sql

您好我有一个查询返回基于CURDATE()的条目数,它适用于本月(4月)的任何数据,但不适用于下个月(5月)。

此工作日期为四月

SELECT COUNT(Machine) FROM production 
WHERE Status = 'Confirmed'  
AND DATE(FROM_UNIXTIME(production.Required)) = CURDATE()

这不像5月那样有用

SELECT COUNT(Machine) FROM production 
WHERE Status = 'Confirmed'  
AND DATE(FROM_UNIXTIME(production.Required)) = CURDATE()+3

1 个答案:

答案 0 :(得分:1)

您的查询最好写成:

WHERE Status = 'Confirmed' AND 
      production.Required >= UNIX_TIMESTAMP(CURDATE() + interval 3 day) AND
      production.Required < UNIX_TIMESTAMP(CURDATE() + interval 4 day) 

虽然这看起来更复杂,但如果有合适的索引,它允许优化使用索引(在这种情况下,最佳索引似乎是(status, Required)。列上的函数通常会阻止索引和其他优化