приведение типа к int в postgres - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь запросить таблицу, содержащую json столбец

select * 
from subscription 
where extras->>'end_date' > 1592424632;

, это сообщение об ошибке:

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

Я пробовал приведение типов

select * 
from subscription 
where extras->>'end_date'::int4 > 1592424632;

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

и дополнительный ввод образца столбца выглядит как

{"end_date": 1592425146, "capacity": 1, "start_date": 1584562746, "devices": "", "quantity": 10}

1 Ответ

4 голосов
/ 29 мая 2020

Вам нужны скобки. Оператор приведения :: имеет более высокий приоритет, чем оператор ->. Таким образом, extras->>'end_date'::int4 анализируется как extras->> ('end_date'::int4), что является причиной ошибки.

select * 
from subscription 
where (extras->>'end_date')::int4 > 1592424632
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...