假设某事件发生在2017-08-20至2017-08-24。
我实际上看到大多数API存储并返回如下:
date_start: date
date_end: date
然而,可能只是这些API使用MongoDB或其他没有类型的NoSQL。
我应该使用上述内容还是使用数据类型interval
(不确定它的用途示例)或daterange
(似乎可能)?
答案 0 :(得分:2)
Range Types可能是最好的 - 无论是daterange,tsrange还是tstzrange
<强> 8.17.1。内置范围类型
PostgreSQL附带以下内置范围类型:
int4range - 整数范围
int8range - bigint范围
numrange - 数字范围
tsrange - 没有时区的时间戳范围
tstzrange - 带时区的时间戳范围
daterange - 日期范围
可以为范围类型的表列创建GiST和SP-GiST索引
您可以为范围创建cxclusion约束,这些范围允许指定约束,例如&#34;非重叠&#34;在范围类型上。
有许多b uilt-in functions and operators可用于范围类型。
唯一的缺点是范围不是SQL标准的一部分,并且其他数据库不支持它们,如果您决定某天迁移到另一个RDBMS,则可能会遇到麻烦。