trunc(add_months(sysdate, 3),’Q’) -1 эквивалентное выражение в Postgres

#sql #oracle #postgresql #date #datetime

#sql #Oracle #postgresql #Дата #дата и время

Вопрос:

может ли кто-нибудь преобразовать это выражение oracle trunc(add_months(sysdate,3),'Q')-1) в postgresql?

Комментарии:

1. postgresql.org/docs/current/functions-datetime.html

Ответ №1:

В основном это выражение дает вам последний день текущего квартала (при условии, что вы удалите последнюю закрывающую скобку, что в противном случае является синтаксической ошибкой).

В postgres вы могли бы сформулировать это как:

 date_trunc('quarter', current_date)    interval '3 months' - interval '1 day'
  

Это генерирует timestamp значение, которое вы можете привести, если хотите date (это различие не существует в Oracle, где a date также хранит компонент времени).

Ответ №2:

Эквивалент Postgres вашего вычисления Oracle можно увидеть ниже.

 select date_trunc('quarter', current_date   interval '3 month') - interval '1 day'