如何在json中查询日期?

时间:2016-05-23 08:19:02

标签: json postgresql

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获取数据。但上面的代码获取所有行。

1 个答案:

答案 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);

此代码仍未经过测试。