Запрос работает в версии Enterprise postgres, но не в Community Edition. - PullRequest
0 голосов
/ 16 апреля 2020

Я попытался выполнить приведенный ниже запрос в Enterprise postgres, который там прекрасно работает, но с ошибкой в ​​версии с открытым исходным кодом (Community) postgres.

select (trunc(now())::date - trunc(now())::date) > '728 days' limit 1

Я также внес некоторые изменения в запрос чтобы сделать его совместимым, как

select (date(now())::date - date(now())::date) > '728 days' limit 1

, но я получил ошибку

ОШИБКА: неверный синтаксис ввода для целого числа: "728 дней"

что нужно изменить здесь?

1 Ответ

2 голосов
/ 16 апреля 2020

В «акции» Postgres вам нужно использовать date_trunc(), потому что trunc() работает только с числами. Но, учитывая ваше выражение, использование date_trunc() по сути бесполезно, потому что приведение ::date достигнет того же.

Если вы вычтите два значения DATE, результатом будет целое число, а не интервал, поэтому вы, вероятно, захотите:

select some_timestamp::date - current_date > 728

(при условии, что ваши выражения now() просто заполнители для чего-то другого, потому что, как показано, это выражение не имеет смысла, так как результат всегда будет 0)

Или, если вы хотите работать с метками времени (и интервалом), вы можно использовать:

select date_trunc('day', some_timestamp) - now() > interval '728 day'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...