【发布时间】:2018-04-03 13:19:40
【问题描述】:
我有一个 postgres 数据库。在“匹配”表中,我在“何时”列中存储了一个这样的 JSONB:
{{"end": "2017-01-04T17:22:13.311693Z", "start": "2017-01-04T16:22:13.311693Z"}, {"end": "2017-01-04T17:22:13.311693Z", "start": "2017-01-04T16:22:13.311693Z"}}
它就像一个存储开始时间和结束时间的对象列表。 现在我想查询所有未过去的匹配项。我怎样才能做到这一点?是否可以将单个“开始”值与当前数据进行比较?
【问题讨论】:
-
缺少有用的信息:您的 Postgres 版本;表定义(
CREATE TABLE显示数据类型和约束的语句;到目前为止您所拥有的(即使它不起作用);期望的示例结果。 -
Postgres 版本:9.6.2,表定义在这里并不重要,因为它是更复杂场景的示例。 “when”列在 elixir(Ecto 迁移)中被定义为 {:array, :map},并在我的数据库中存储为 jsonb。期望的结果:SELECT * FROM Matches WHERE json 数组中的至少一个“end”字段大于当前 utc 日期时间
-
您的示例值不是合法的 JSON。它应该是一个数组吗?那么
'[{"end": "...", "start": "..."}, {...}]'? -
它被解码为对象数组,所以我认为它是正确的
-
你觉得呢?这不是意见问题。
ERROR: invalid input syntax for type json
标签: sql postgresql jsonb