SQL Запрос для выбора Specifi c Месяц в MYSQL База данных - PullRequest
1 голос
/ 04 августа 2020

У меня есть база данных, в которой есть поле даты 2020-08-03

Я пытаюсь получить данные за каждый месяц

SELECT COUNT(*) FROM new_caseWHERE sla_client = 'ITA' AND MONTH(sysdate) = MONTH(current_date ()) 
AND YEAR(sysdate) = YEAR(current_date())

Вышеупомянутое работает для текущего месяца и год, что бы я использовал для запроса в указанном выше январе 2020 года, феврале 2020 года и т. д.

1 Ответ

1 голос
/ 04 августа 2020

Я думаю, что вам нужна агрегация:

select
    date_format(mydate, '%Y-%m') yyyy_mm,
    count(*) cnt
from new_case
where sla_client = 'ITA'
group by date_format(mydate, '%Y-%m')
order by yyyy_mm

Это дает вам одну строку в месяц с количеством строк в этом месяце (если нет данных за данный месяц, тогда он просто делает не отображаются в наборе результатов).

Если вам нужно выполнить фильтрацию по заданному диапазону дат, я бы рекомендовал использовать предложение where, которое фильтрует непосредственно значения даты, а не применяет функции даты. Допустим, вам нужны последние 3 месяца и текущий месяц, а затем:

select
    date_format(mydate, '%Y-%m') yyyy_mm,
    count(*) cnt
from new_case
where 
    sla_client = 'ITA'
    and mydate >= date_format(current_date, '%Y-%m-01') - interval 3 month
    and mydate < date_format(current_date, '%Y-%m-01') + interval 1 month
group by date_format(mydate, '%Y-%m')
order by yyyy_mm
...