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

时间:2016-11-16 08:11:19

标签: postgresql datetime jsonb

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

我有一个只有id-column和data-column的表,它使用jsonb-type。在jsonb-object里面我有一个datetime字段。我在各种帖子中读到,我应该使用ISO-8601日期格式存储在数据库中。

我想按日期过滤我的表:

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

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

提前致谢:)

2 个答案:

答案 0 :(得分:1)

该格式的一大优势是字符串顺序与日期顺序相对应,因此您在问题中引用的比较实际上可以按预期工作。

第二个优点是该格式的时间戳可以很容易地转换为PostgreSQL timestamp with time zone值,因为类型输入函数可以理解这种格式。

我希望你不是在“在基督面前”处理日期,因为它不会那么容易与那些人一起工作。

答案 1 :(得分:0)

恕我直言您的查询应该生成

  

错误:运算符不存在:jsonb>带时区的时间戳

如果我做对了。如果您将->更改为->>,则应获取文本值而不是jsonb字段(也不能与时间戳相比)。 它应该像

一样

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