如何存储活动从2017-08-20到2017-08-24?什么数据类型?

时间:2017-08-18 15:43:49

标签: sql postgresql database-design

假设某事件发生在2017-08-20至2017-08-24。

我实际上看到大多数API存储并返回如下:

date_start: date
date_end: date

然而,可能只是这些API使用MongoDB或其他没有类型的NoSQL。

我应该使用上述内容还是使用数据类型interval(不确定它的用途示例)或daterange(似乎可能)?

1 个答案:

答案 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,则可能会遇到麻烦。