在数据库字段中搜索元数组
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
我有一个名为 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