首页 > 解决方案 > Rails:Postgres JSONB“之间”查询

问题描述

我正在使用 Rails 5 + Postgres。

我有一个 Postgres JSONB 列data,其名称如下所示:

{username: 'McGruff', timestamp: 123456789}

我想查询两个时间戳之间的数据,以获取所有时间戳都在某个范围内(例如,过去 24 小时)的记录子集。

使用下面的评论,答案是:

Model.where("(data->'timestamp')::int BETWEEN ? AND ?", start, end)

谢谢您的帮助!

标签: ruby-on-railspostgresqlruby-on-rails-5

解决方案


通过将&输入作为字符串提供来使用where子句。作为jsonb列 中以字符串格式存储的数据。startend

有点像下面:

Model.where((data->>'timestamp')::int between ? and ?, start, end)

推荐阅读