Postgres JSONB дата условие true для всех записей массива - PullRequest
0 голосов
/ 05 марта 2020

У меня есть JSONB, который выглядит примерно так

[{
"foo":"bar",
"date":"2020-01-01"
},
{
"foo":"bar",
"date":"2020-02-03"
},
{
"foo":"bar",
"date":"2020-01-02"
}]

Мне нужен запрос для возврата true, если ВСЕ "даты" меньше 1 года go. Я посмотрел на postgres документацию JBON и нашел только один тип фитинга, который я использовал? И я не просто пытаюсь сравнить строки, но даты, которые являются строками, так что я немного потерян здесь

1 Ответ

2 голосов
/ 05 марта 2020

Вам нужно будет перебрать все элементы, а затем преобразовать строки в даты, чтобы можно было их сравнивать.

select .... other columns ...., 
       current_date - interval '1 year' < all (select (x.entry ->> 'date')::date
                                               from jsonb_array_elements(t.data) as x(entry))
from the_table t
...