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

Search through meta array in database field

我有一个名为 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"

是否可以对 Select 进行 SQL 查询,例如 date_approved 一月份的所有记录?

我不处理将值插入数据库,所以我不能真正改变数据的存储方式

如果数据确实按照您向我们展示的方式存储,那么可以使用 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