我只需要从当前系统日期开始一个月。我尝试过类似下面的方法
SELECT COUNT(*) FROM `audit` JOIN `user` ON `user`.id=`audit`.`auditor_id` WHERE `audit`.`auditor_id`=1 AND MONTH(`audit`.`created_date`)=NOW()
但是,没有从这个查询中得到任何计数。我可以使用 NOW() 进行这样的查询吗?
我建议写这样的逻辑:
SELECT COUNT(*)
FROM `audit` a JOIN
`user` u
ON u.id = a.auditor_id
WHERE a.auditor_id = 1 AND
a.created_date >= curdate() - interval (1 - day(curdate()) day AND
a.created_date < (curdate() - interval (1 - day(curdate()) day) + interval 1 month;
与使用MONTH(a.created_date)
. 首先,它包括年份,因此只考虑当前月份。
也许更重要的是,这是“索引安全的”。它可以利用 上的索引audit(auditor_id, created_date)
。为了优化索引使用,您希望避免列上的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句