sql получить количество дней в конкретном месяце - PullRequest
0 голосов
/ 18 ноября 2018

Мне нужно сделать запрос на MySQL, который возвращает частоту в днях курса за определенный месяц, я объясню лучше на примере:

Course A
start 2018-10-18 end 2018-11-16 (incidence in november 16 days
Course B
start 2018-11-05 end 2018-11-05 (incidence in november 1 days)
Course C
start 2018-10-05 end 2019-01-20 (incidence in november 30 days)

Месяц заболеваемости (например, ноябрь) выбирается пользователем динамически.

Спасибо

1 Ответ

0 голосов
/ 18 ноября 2018

Найти ноябрьскую составляющую курсов, начинающихся в ноябре:

SELECT DATE_DIFF(
  CASE WHEN start_date > '2018-11-01' THEN start_date ELSE '2018-11-01' END,
  CASE WHEN end_date <= '2018-11-30' THEN end_date ELSE '2018-11-30' END
) + 1
FROM 
  courses
WHERE NOT(start_date > '2018-11-30' OR end_date < '2018-11-01')

Мы в основном запускаем тест на дату начала и окончания - если старт начинается до ноября, привязать его к ноябрю 1-го числа. Если дата окончания указана после конца ноября, отметьте ее до конца ноября. Запрос содержит две даты - интерфейсное приложение может предоставить их после того, как пользователь выберет ноябрь. Основная формула для нахождения последней даты месяца состоит в том, чтобы перейти к первой дате следующего месяца (т. Е. Тот же год, месяц +1, «01» как день), минус один день

Мы хотим исключить курсы, которые заканчиваются до или начинаются после, следовательно, структура предложения where ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...