Как я могу получить месяц от текущей системной даты - PullRequest
0 голосов
/ 19 февраля 2019

Мне нужно получить только месяц от текущей системной даты. Я попробовал что-то вроде ниже

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 голосов
/ 19 февраля 2019

Я бы рекомендовал написать логику следующим образом:

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).Чтобы оптимизировать использование индекса, вы должны избегать функций для столбцов.

0 голосов
/ 19 февраля 2019

Использование 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...