Kur*_*ler 3 postgresql postgresql-9.3
我为这篇文章创建了一个sql小提琴:http://sqlfiddle.com/#!15/7b5d7/1/0
问题#1
为什么插入daterange具有独占边界的记录实际上存储具有包含下限和独占上限的范围?为什么不将它们作为包容性边界存储?
问题2
SELECT upper('[2016-06-19, 2016-06-21)'::daterange)回报2016-06-21.注意,[表示包含下限和)独占上限.
不应该选择上限回报2016-06-20?日期是否有不连续的间隔?
重问题1:关闭开是处理日期范围,在学术文献20 - 25年历史的标准方式.请参阅Tom Johnston 撰写的Bightemporal Data第24-25页,以及Richard Snodgrass 在SQL中开发面向时间的数据库应用程序.
但我认为其中一个原因是连续范围没有重叠.如果a是[May2016, Jun2016)和b是[Jun2016, Jul2016),它们不共享任何天.所以他们"拼凑",你不必担心他们触摸的边缘情况.
请注意,闭合打开的一个缺点(可能)是您无法指定空范围.[May2016, May2016)只是一种自相矛盾,而[May2016, May2016]只是一种瞬间.
重问题2:同样也有可能是不同的,但我能想到的做的几个优点upper([May2016, Jun2016))回报Jun2016:
upper(a) = lower(b).另请注意,在Postgres中,所有与时间相关的数据类型都是离散的.曾经有一个选项来编译Postgres与基于浮动的时间戳,但它已被弃用,我从来没有遇到它.
| 归档时间: |
|
| 查看次数: |
999 次 |
| 最近记录: |