Получить первую дату предыдущего месяца - PullRequest
2 голосов
/ 19 июня 2019

Есть ли способ получить первый день предыдущего месяца, кроме

date_trunc('month', current_date - interval '1 month') ?

Я пытаюсь сохранить запрос в программном обеспечении дизайнера отчетов (DBxtra), но оно зависает при использовании функции «интервала» в PostgreSQL.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Попробуйте:

make_interval(month := 1)
'1 month'::interval
cast('1 month' as interval)

вместо interval '1 month'

0 голосов
/ 20 июня 2019

Вы можете попытаться рассчитать предыдущий месяц вручную.

Один из подходов - извлечь месяц и вычесть 1, если это не 12 (в этом случае вы возвращаете 1):

SELECT to_timestamp(concat(EXTRACT(YEAR from current_date), '-',CASE (EXTRACT(MONTH from current_date)) WHEN 12 THEN 1 ELSE (EXTRACT(MONTH from current_date)-1) END,'-', 1), 'YYYY-MM-DD');

Если вам нужно без часового пояса:

SELECT to_timestamp(concat(EXTRACT(YEAR from current_date), '-',CASE (EXTRACT(MONTH from current_date)) WHEN 12 THEN 1 ELSE (EXTRACT(MONTH from current_date)-1) END,'-', 1), 'YYYY-MM-DD')::timestamp without time zone;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...