Как получить первую дату месяца и дату окончания по данному месяцу?

#postgresql #date

Вопрос:

В зависимости от месяца я хочу получить дату начала и дату окончания этого месяца. Но я получаю дату начала и дату окончания текущего месяца.

Если я дам 9 (номер месяца) в качестве входного параметра. Результат должен быть:

 2021-09-01 -- start date
2021-09-30 -- end date.
 

вот мой код:

 start_date =(select date_trunc('month', current_date-interval '1 year')::date);
end_date = (select date_trunc('month', current_date-interval '1 year') '1month'::interval- 
            '1day'::interval as end_date);
 

выходные данные: 2021-10-01,2021-10-31

Ответ №1:

Вы можете использовать make_date для создания первого числа месяца (для текущего года), а затем использовать interval '1 month - 1day для поиска последнего дня:

 start_date := make_date(extract(year from current_date)::int, 9, 1);
end_date := (make_date(extract(year from current_date)::int, 9, 1)   interval '1 month - 1day')::date;