在数据库字段中搜索元数组

时间:2015-01-22 06:41:20

标签: sql postgresql

我有一个名为meta的数据库字段,它以这种格式存储一组日期时间

date_approved"=>"2015-01-01T10:19:44+00:00", "date_realized"=>"2015-01-01T10:31:11+00:00", "date_tn_approved"=>"2015-01-01T10:09:40+00:00"

是否可以选择SQL查询,例如date_approved在1月份的所有记录?

我没有处理将数值插入数据库的问题,因此我无法真正改变数据的存储方式

1 个答案:

答案 0 :(得分:2)

如果数据确实以您向我们展示的方式存储,则可以使用hstore来实现,因为该值可以直接转换为hstore

select *
from the_table
where extract(month from ((meta::hstore -> 'date_approved')::timestamp)) = 1

如果列中的格式与您向我们展示的格式完全不同,或者时间戳以不同的方式格式化,则会失败。

您可能需要create hstore扩展程序才能使用该扩展程序:

create extension hstore;

这需要以超级用户身份完成。

SQLFiddle:http://sqlfiddle.com/#!15/d41d8/4408