I have a column jsonb that contains an element:
"element": [
{"field": "2024-08-01", ...},
{"field": "2024-08-02", ...}
]
I need to create a query using sqlalchemy where I need to select rows with matching dates. My current function is:
def make_nested_date(query, value: dict):
"""
Create nested date filter
"""
date_from = isoparse(value.get('from'))
date_to = isoparse(value.get('to'))
query = query.where(
and_(func.jsonb_array_elements(Table.c.data['element'])['field'].astext.cast(Date) >= date_from,
func.jsonb_array_elements(Table.c.data['element'])['field'].astext.cast(Date) <= date_to)
)
return query
It doesn’t work.
Postgresql 9.6
I tried to convert the json array to a date array, but I couldn’t process it further.
6