Найти ноябрьскую составляющую курсов, начинающихся в ноябре:
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 ..