Postgres jsonb: приведение элемента массива к целому числу - PullRequest
1 голос
/ 14 февраля 2020

Использование Postgres 11.2.9 (ubuntu),

В моей базе данных есть поле jsonb, содержащее значения, которые выглядят следующим образом: [1618171589133, 1618171589245, 1618171589689]

Я бы хотел получить строки, в которых первый элемент меньше указанного c значения. Я пробовал это:

SELECT * FROM user.times WHERE time ->> 0 < 1618171589133

, но я получаю следующую ошибку: ERROR: operator does not exist: text = bigint

Должен ли я как-то привести значение времени к цифре c значение ? Я пытался time ->> 0::numeric, но на самом деле я не знаю, что делать.

1 Ответ

2 голосов
/ 14 февраля 2020

Оператор ->> возвращает элемент в данной позиции в виде текста, который затем можно преобразовать в целое число (или, как кажется в этом случае, bigint), как это обычно делается в postgres, используя :: как суффикс.

SELECT * FROM user.times WHERE ((time ->> 0)::bigint) < 1618171589133
...