PostgreSQL 使用小于/大于(< 或 >)与严格左/右(<< 或 >>)比较日期范围和日期

标签 postgresql

在 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);

最佳答案

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

  1. 我认为这样更易读

  2. 它可以由 upper(mydateranges)

    上的 B 树索引支持

关于PostgreSQL 使用小于/大于(< 或 >)与严格左/右(<< 或 >>)比较日期范围和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58137224/

相关文章:

python - Django-postgres : How to create an index on a JsonB field

postgresql - 通过添加月份来计算 Postgres 中的日期?

sql-server - 数据库引擎在 SQL 级别的兼容性如何?

ruby-on-rails - Postgresql 上带有 UUID 的 Rails 5.2 ActiveStorage

postgresql - 在嵌套的 JSONB 文档中按条件查询数据集

django - 编程错误 : when using order_by and distinct together in django

database - 授予对 future 在 PostgreSQL 中创建的模式的使用权和特权

node.js - 使用 node-postgres 从 SELECT 返回结果

sql - PostgreSQL:如何索引所有外键?

SQL根据第二个表中的值列表从第一个表中选择