Postgres - show' present'或者'当前'在日期戳?

时间:2018-02-20 02:03:15

标签: sql postgresql database-design

我有一张名为links的表格,显示两个人在一起(即结婚)的日期范围。以下是2行的示例:

id  association_left  association_right  dateFrom    dateTo
1   Dad               Mom                2010-02-13  2011-01-15
2   Dad               Mom                2012-04-17  2015-11-28

所以在这里我们看到爸爸和妈妈在一起两个不同的时间段。

但我想知道:有没有办法证明爸爸和妈妈目前在一起?类似的东西:

id  association_left  association_right   dateFrom       dateTo
3   Dad               Mom                 2016-02-09     present

如果没有,如果两个人目前一起展示会是什么样的有效方式呢?

2 个答案:

答案 0 :(得分:1)

最好使用infinity作为延伸到未来的时间范围的上限。

NULL,意思是“未知”,不是最好的代表,因为这样你就无法消除“未知日期”和“未来某个地方的数据”之间的歧义。

此外,如果您使用infinity,您的查询将变得更简单,从而提高效率。比较:

... WHERE adate >= datefrom AND (dateto IS NULL OR adate <= dateto)

... WHERE adate BETWEEN datefrom AND dateto

第二个表达式可以更好地使用索引。

答案 1 :(得分:0)

我认为你在问是否没有日期然后假设他们目前在一起

将dateTo列保留为null并使用coalesce(dateTo,current_date)