【问题标题】:PostgreSQL comparing daterange and date using less/greater than (< or >) vs strictly left/right of (<< or >>)PostgreSQL比较日期范围和日期使用小于/大于(<或>)与严格的左/右(<<或>>)
【发布时间】:2019-09-27 15:12:38
【问题描述】:

在 PostgreSQL 中,当查询日期范围字段以获取完全在某个日期之前或之后的范围时,以下哪个模式是更规范的模式?哪个性能更好?

1. 将日期与范围的上限/下限进行比较,并使用小于/大于运算符,例如:

select * from mytable where upper(mydateranges) <= '2000-01-02';

2. 或者,将日期转换为具有无限上限/下限的日期范围,并使用严格的左/严格右运算符,例如:

select * from mytable where mydateranges << '[2000-01-02,]';

以上示例将引用这样创建的表:

create table mytable (mydateranges daterange);

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    我更喜欢第一个变体,因为

    1. 我认为这更具可读性

    2. 它可以被upper(mydateranges)上的B-tree索引支持

    【讨论】:

      猜你喜欢
      • 2019-09-21
      • 2012-07-30
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多