В postgresql я бы сделал это
SELECT date_part('month', d), count(d)
FROM generate_series('2019-09-25'::date, '2019-09-25'::date + INTERVAL '105 days', INTERVAL '1 day') series (d)
GROUP BY date_part('year',d), date_part('month', d)
ORDER BY date_part('year',d), date_part('month', d)
Очевидно, что вы не используете postgresql, но, возможно, это даст вам подсказку. Хитрость заключается в том, чтобы создать серию дат в пределах интервала, который вы затем можете посчитать. Вот вывод с месяцем и количеством дней. Обратите внимание, что есть 106 дней, потому что интервал включает даты начала и окончания.
9;6
10;31
11;30
12;31
1;8