MySQL запрос на возврат дат ежемесячно - PullRequest
0 голосов
/ 14 апреля 2020

У меня проблема с построением 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>

Буду благодарен за подсказку и указание на правильное решение.

...