2017-08-23 2 views
0

でJSONデータ型の列から日付を抽出するために、私はJSONデータ型だ列open_housesを持っており、それは次のようになります。私はこのコラムから「日」を抽出しようとするとどのようにPostgresの

open_houses 
[{"Date": "2017-08-13", "ToTime": "4:00PM", "FromTime": "2:00PM"}] 
[{"Date": "2017-08-12", "ToTime": "3:00PM", "FromTime": "1:00PM"}] 
[{"Date": "2017-08-12", "ToTime": "4:00PM", "FromTime": "2:00PM"}] 
[{"Date": "2017-08-13", "ToTime": "3:00PM", "FromTime": "1:00PM"}] 

私が手エラー -

SELECT ... 
FROM prod.vw_listing 
WHERE ... 
     ... 
     AND open_houses[1] -> 'Date'::DATE >= current_date; 

エラー:

cannot subscript type jsonb because it is not an array 

答えて

-1

は、JSON ARを取得するために->オペランドを使用します線要素:

with vw_listing (open_houses) as (values 
    ('[{"Date": "2017-08-13", "ToTime": "4:00PM", "FromTime": "2:00PM"}]'::jsonb), 
    ('[{"Date": "2017-08-12", "ToTime": "3:00PM", "FromTime": "1:00PM"}]'), 
    ('[{"Date": "2017-08-12", "ToTime": "4:00PM", "FromTime": "2:00PM"}]'), 
    ('[{"Date": "2017-08-13", "ToTime": "3:00PM", "FromTime": "1:00PM"}]') 
) 
select (open_houses -> 0 ->> 'Date')::date 
from vw_listing 
; 
    date  
------------ 
2017-08-13 
2017-08-12 
2017-08-12 
2017-08-13 
0

私は、このことによってこの問題を解決することができた。だから、あなたが私の答えを使用

SELECT ... 

FROM prod.vw_listing 
WHERE ... 
     AND (open_houses -> 0 ->> 'Date')::date>= current_date; 
+0

を。なぜそれを受け入れないのですか? –

+0

とあなたはそれをdownvoted、どのような幼稚な?私は本当にあなたの答えを使用しなかった、私は私のwhere句を変更しました。それが私に実際の答えを与えたら、私はそれを受け入れていただろう。私はあなたに+1を与えました。 – hky404

+0

他の誰かがそれをして、それに値するものでした。 –

関連する問題