Postgresql jsonb与日期时间

时间:2019-01-10 07:51:20

标签: postgresql database-design sqldatatypes

我需要存储两个日期valid_from和valid_to。

最好使用两个datetime字段,例如有效时间:有效时间和有效时间至数据时间。

将数据存储在jsonb字段中是否更好:{"from": "2001-01-01", "to": "2001-02-02"}

对数据库的读取多于对数据库的写入。 DB:PostgresSQL 9.4

2 个答案:

答案 0 :(得分:1)

使用两列timestamp(Postgres中没有datetime类型)。

它们可以被有效地建立索引,并且可以保护您免受无效的时间戳记值的侵害-没有什么可以阻止您将"2019-02-31 28:99:00"存储在JSON值中。

如果您经常需要使用这两个值来检查是否存在另一个tiemstamp值,则还可以考虑使用range type将这两个值存储在单个列中。

答案 1 :(得分:1)

您可以使用daterange类型: 即:

  • '[2001-01-01, 2001-02-02]'::daterange的意思是从2001-01-012001-02-02 约束包容性
  • '(2001-01-01, 2001-02-05)'::daterange的意思是来自2001-01-012001-02-05绑定排他性

也:

  • 可以使用诸如Infinite之类的特殊值
  • lower(anyrange) =>范围的下限
  • 以及其他类似重叠运算符的内容,请参见文档;-)

Range Type