Не следует объявлять как метку времени в postgreSQL - PullRequest
0 голосов
/ 01 июля 2018
select *
From #####
where username   in ('akhil')   and between (now()  ::timestamp and now()  - interval '1 day'::timestamp)

Получение ошибки в этой строке. Ошибка - невозможно преобразовать интервал типа в метку времени без часового пояса.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

ошибка во втором приведении

now() - interval '1 day'::timestamp

переводится как.

now() - (interval '1 day')::timestamp

когда вы на самом деле имеете в виду

(now() - interval '1 day')::timestamp

или, возможно, вы имеете в виду

now()::timestamp - interval '1 day'

оба действительны, но результат, который вы получите, когда переход на летнее время начинается или останавливается, отличается (подсказка interval '1 day' совпадает с interval '24 hours' в первом)

Существует большая вероятность того, что вы на самом деле должны использовать timestamp with time zone для столбца базы данных.

0 голосов
/ 01 июля 2018

Вам не нужен второй актерский состав. Вам нужно имя столбца. Примерно так:

select * 
from #####
where username in ('akhil') and
      <some date column> >= now() - interval '1 day' and
      <some date column> < now();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...