我需要存储两个日期valid_from和valid_to。
最好使用两个datetime字段,例如有效时间:有效时间和有效时间至数据时间。
将数据存储在jsonb字段中是否更好:{"from": "2001-01-01", "to": "2001-02-02"}
对数据库的读取多于对数据库的写入。 DB:PostgresSQL 9.4
答案 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-01
到2001-02-02
约束包容性'(2001-01-01, 2001-02-05)'::daterange
的意思是来自2001-01-01
到2001-02-05
绑定排他性也:
Infinite
之类的特殊值lower(anyrange)
=>范围的下限