create tabel test(json jsonb);
insert into test values('{"graductionDate": "Jun 1 2015 12:00AM"}')
insert into test values('{"graductionDate": "Jun 1 2016 12:00AM"}')
查询结果不正确:
select * from test where json>'{"graductionDate":"20151001 00:00"}'
我希望在20150101之后使用graductionDate获取数据。但上面的代码获取所有行。
答案 0 :(得分:1)
http://www.postgresql.org/docs/current/static/functions-json.html
在我猜测之前没有使用json对象你需要从对象中提取日期字段,将其视为日期,然后将其与另一个日期进行比较。
select *
from test
where ((json->>'graductionDate')::timestamp) > ('20151001 00:00':: timestamp);
我没有测试过这段代码。
修改强>
从您的评论中听起来->>
运算符将null
视为空字符串''
。您可以使用''
功能将null
转换为nullif()
:
select *
from test
where (nullif(json->>'graductionDate', '')::timestamp) > ('20151001 00:00':: timestamp);
此代码仍未经过测试。