Postgresql wybieranie wartości z json

0

Cześć, mam problem z stworzeniem zapytania które wybrało by wartość z jsona.
Mam taką tabelę

id json_data
1 json_value

przykładowa wartość w kolumnie json_data:

{
	"events": {
		[
			{
				"name": "a",
				"from": "2020-01-01",
				"to": "2020-01-31"
			},
			{
				"name": "b",
				"from": "2020-02-01",
				"to": "2020-09-01"
			},
			{
				"name': "c",
				"from": "2020-12-20",
				"to": "2021-05-03"
			}
		]
	},
	"additional": {
		[1, 2, 3, 4]
	}
}

Potrzebuję z takiego jsona wybrać wartość "name", taką gdzie data dzisiejsza zawiera się w okresie "from" - "to", ale nie mam pomysłu jak się za to zabrać.

2

Podany przez Ciebie JSON ma niepoprawny format i literówki. Zmieniłem go dla przykładu.

WITH test_data AS
(
    SELECT
    1 AS id,
    '{"events": 
        [
            {
                "name": "a",
                "from": "2020-01-01",
                "to": "2020-01-31"
            },
            {
                "name": "b",
                "from": "2020-02-01",
                "to": "2020-09-01"
            },
            {
                "name": "c",
                "from": "2020-12-20",
                "to": "2021-05-03"
            }
        ],
        "additional": [1, 2, 3, 4]
        
    }'::json AS json_data
)
SELECT 
t.id,
jd.*
FROM test_data t
CROSS JOIN
json_to_recordset(t.json_data#>'{events}') AS jd("name" TEXT, "from" date, "to" date)
WHERE current_date BETWEEN jd."from" AND jd."to";

1 użytkowników online, w tym zalogowanych: 0, gości: 1