您好我有一个查询返回基于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
答案 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)
。列上的函数通常会阻止索引和其他优化