Php Sql CURDATE()在下个月不工作

Php Sql CURDATE()在下个月不工作,php,mysql,sql,Php,Mysql,Sql,您好,我有一个查询返回基于CURDATE()的条目计数,它适用于本月(4月)的任何dat,但不适用于下个月(5月) 由于日期是在4月份,因此此项工作正常 SELECT COUNT(Machine) FROM production WHERE Status = 'Confirmed' AND DATE(FROM_UNIXTIME(production.Required)) = CURDATE() 这与5月份不同 SELECT COUNT(Machine) FROM production

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

由于日期是在4月份,因此此项工作正常

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

您的查询最好写为:

WHERE Status = 'Confirmed' AND 
      production.Required >= UNIX_TIMESTAMP(CURDATE() + interval 3 day) AND
      production.Required < UNIX_TIMESTAMP(CURDATE() + interval 4 day) 
其中状态为“已确认”且
生产.必需>=UNIX\u时间戳(CURDATE()+间隔3天)和
生产。所需时间
虽然这看起来更复杂,但如果有合适的索引可用,它允许优化使用索引(在这种情况下,最好的索引似乎是
(状态,必需)
。列上的函数通常阻止索引和其他优化。

CURDATE()+间隔3天
CURDATE()+3
只需将3作为一个数字添加到日期中,就可以得到20180431