postgresql - 当我想按日期过滤时,ISO8601 是 PostgreSQL jsonb 的最佳日期格式吗?

标签 postgresql datetime jsonb

我是 PostgreSQL 新手,有以下问题:

我有一个只有一个 id 列和一个数据列的表,它使用 jsonb 类型。在 jsonb-object 内部,我有一个日期时间字段。我在各种帖子中读到,我应该使用 ISO-8601 日期格式存储在数据库中。

我想按日期过滤我的表格,如下所示:

SELECT * FROM table WHERE data->'date' > '2016-01-01T00:00'

这真的是用于此目的的最佳日期格式吗?

提前致谢:)

最佳答案

恕我直言,您的查询应该产生

ERROR: operator does not exist: jsonb > timestamp with time zone

如果我猜对了。如果您将 -> 更改为 ->> 它应该获得一个文本值而不是 jsonb 字段(这也不能与时间戳相比较)。 应该是这样的

SELECT * FROM table WHERE (data->>'date')::timestamptz > '2016-01-01T00:00' 工作

关于postgresql - 当我想按日期过滤时,ISO8601 是 PostgreSQL jsonb 的最佳日期格式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40626955/

相关文章:

ruby-on-rails - Rails Scope for JSONB Hash with Array for Value

node.js - Sequelize - 外键关系 - 别名问题

java - 单个 tomcat 和 postgres 实例上的多个应用程序?

postgresql - 如何将 PostgreSQL 数据文件导入 Amazon redshift

c - 添加迄今为止的天数后结果不正确

c# - 在将日期时间插入 SQL Server 数据库之前验证日期时间

python - datetime.timestamp 与 1970 年以来的秒数不同

postgresql - 如何聚合 JSONB PostgreSQL 10

java - 具有基于仲裁的同步复制的 JDBC Postgres 故障转移

json - 在 Quarkus 的 REST Web 服务中返回 JSON 时出现 LazyInitializationException