[英]Postgres jsonb and query
我有一個postgres數據庫。 在“匹配”表中,我在“時間”列中存儲了這樣的JSONB:
{{"end": "2017-01-04T17:22:13.311693Z", "start": "2017-01-04T16:22:13.311693Z"}, {"end": "2017-01-04T17:22:13.311693Z", "start": "2017-01-04T16:22:13.311693Z"}}
它的工作方式類似於存儲開始時間和結束時間的對象列表。 現在,我想查詢所有未過去的匹配項。 我怎樣才能做到這一點? 是否可以將單個“起始”值與當前數據進行比較?
看看這個SQL Fiddle 。
您可以使用->>
運算符查詢jsonb。 對於日期/時間,您需要轉換結果以便進行比較。 此查詢僅返回將來開始的值:
SELECT when_col->>'start' FROM match
WHERE to_date(when_col->>'start','YYYY-MM-DD"T"HH24:MI:SS') >= NOW();
請注意,您在上面提供的JSON格式錯誤。 我在小提琴中將它分成幾行:
CREATE TABLE match
(
when_col jsonb
);
INSERT INTO match (when_col) VALUES ('{"end": "2017-01-04T17:22:13.311693Z", "start": "2017-01-04T16:22:13.311693Z"}');
INSERT INTO match (when_col) VALUES ('{"end": "2017-02-04T17:22:13.311693Z", "start": "2017-02-04T16:22:13.311693Z"}');
INSERT INTO match (when_col) VALUES ('{"end": "2019-02-04T17:22:13.311693Z", "start": "2019-02-04T16:22:13.311693Z"}');
INSERT INTO match (when_col) VALUES ('{"end": "2029-02-04T17:22:13.311693Z", "start": "2029-02-04T16:22:13.311693Z"}');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.