У меня проблема с построением sql запроса на возврат дат ежемесячно. Пример таблицы содержит даты:
some_date
...
2019-12-19
2019-12-20
2019-12-23
2019-12-24
2019-12-27
2019-12-30
2019-12-31
2020-01-02
2020-01-03
2020-01-07
2020-01-08
2020-01-09
2020-01-10
2020-01-13
2020-01-14
2020-01-15
2020-01-16
2020-01-17
2020-01-20
2020-01-21
2020-01-22
2020-01-23
2020-01-24
2020-01-27
2020-01-28
2020-01-29
2020-01-30
2020-01-31
2020-02-03
2020-02-04
2020-02-05
2020-02-06
2020-02-07
2020-02-10
2020-02-11
2020-02-12
2020-02-13
2020-02-14
2020-02-17
2020-02-18
2020-02-19
2020-02-20
2020-02-21
2020-02-24
2020-02-25
2020-02-26
2020-02-27
2020-02-28
2020-03-02
2020-03-03
2020-03-04
2020-03-05
2020-03-06
2020-03-09
2020-03-10
2020-03-11
2020-03-12
2020-03-13
2020-03-16
2020-03-17
2020-03-18
2020-03-19
2020-03-20
2020-03-23
2020-03-24
2020-03-25
2020-03-26
2020-03-27
2020-03-30
2020-03-31
2020-04-01
2020-04-02
2020-04-03
2020-04-06
2020-04-07
2020-04-08
2020-04-09
2020-04-10
2020-04-11
2020-04-14
Я сейчас использую запрос:
SELECT some_date FROM some_db
WHERE some_date IN (SELECT max(some_date) FROM some_qts WHERE DAY(some_date) <= DAY(('2020-04-09') - INTERVAL 1 MONTH) GROUP BY year(some_date), month(some_date))
, и я возвращаюсь так:
2020-01-03
2020-02-06
2020-03-06
2020-04-06
Проблема заключается в том, когда я хотел бы выбрать дни <= 2020-04-02 - тогда выходные данные пропустят месяцы, в которых начальная дата больше 02 - например, первая дата февраля 2020 года - 2020-02-03 - чего бы я хотел достичь в этом случае максимальная доступная дата для этого пункта - в моем случае 2020-01-31. </p>
Буду благодарен за подсказку и указание на правильное решение.