如何从当前系统日期获得月份

时间:2019-02-19 09:44:25

标签: mysql sql

我只需要从当前系统日期获取一个月。我尝试过以下操作

SELECT COUNT(*) FROM `audit` JOIN `user` ON `user`.id=`audit`.`auditor_id` WHERE  `audit`.`auditor_id`=1 AND MONTH(`audit`.`created_date`)=NOW()

但是,此查询没有任何计数。我可以使用NOW()进行这样的查询吗?

2 个答案:

答案 0 :(得分:2)

使用month()函数

SELECT COUNT(*) 
FROM `audit` JOIN `user` ON `user`.id=`audit`.`auditor_id` 
WHERE  `audit`.`auditor_id`=1 AND MONTH(`audit`.`created_date`)=month(NOW())

答案 1 :(得分:1)

我建议编写这样的逻辑:

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)上的索引。要优化索引使用率,您要避免在列上使用函数。