JSONB колонка values, в которой записан JSON вида:
[{value: 0, timestamp: '2020-11-11T00:00:00-06:00'}, {value: 0, timestamp: '2020-11-11T01:00:00-06:00'}, {value: 0, timestamp: '2020-11-11T02:00:00-06:00'}, ....... {value: 0, timestamp: '2020-11-11T23:00:00-06:00'}].
На входе у меня будет start_date, end_date.
Я хочу сделать запрос SELECT, но такой хитрый, чтобы в результате values были между start_date и end_date. Типа обрезать JSON и вернуть мне его) Это как-то можно сделать?:)
Накидал простой пример: https://dbfiddle.uk/?rdbms=postgres_11&fiddle=e646724f207bc7a55e7c91c6080fb273
Спасибо)
Тут всего два удара бубном - развернуть JSON, отфильтровать, и завернуть обратно: SELECT json_agg(row_to_json(data)) FROM jsonb_to_recordset('[{"value": 0, "ts": "2020-11-11T00:00:00-06:00"}, {"value": 1, "ts": "2020-11-11T01:00:00-06:00"}, {"value": 2, "ts": "2020-11-11T02:00:00-06:00"},{"value": 23, "ts": "2020-11-11T23:00:00-06:00"}]') AS data(value integer, ts timestamp with time zone) WHERE data.ts BETWEEN '2020-11-11T00:10:00-06:00' AND '2020-11-11T02:10:00-06:00';
Обсуждают сегодня