在 PostgreSQL 中,当查询 daterange 字段以获取完全在某个日期之前或之后的范围时,以下哪项是更规范的模式?哪个性能更好?
1. 将日期与范围的上限值/下限值进行比较,并使用小于/大于运算符,例如:
select * from mytable where upper(mydateranges) <= '2000-01-02';
2. 或者,将日期转换为具有无限上限/下限的日期范围,并使用运算符的严格左侧/右侧,例如:
select * from mytable where mydateranges << '[2000-01-02,]';
上面的例子将引用一个像这样创建的表:
create table mytable (mydateranges daterange);
最佳答案
我更喜欢第一个变体,因为
我认为这样更易读
它可以由
上的 B 树索引支持upper(mydateranges)
关于PostgreSQL 使用小于/大于(< 或 >)与严格左/右(<< 或 >>)比较日期范围和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58137224/