通过索引使用时区按时间戳查询行

atmip9wb  于 2022-10-15  发布在  PostgreSQL
关注(0)|答案(1)|浏览(151)

我有以下条件:
where s.event_time AT TIME ZONE 'Europe/Berlin'>= ?
有一个关于“EVENT_TIME”的索引,如果我说
where s.event_time >= ?
加上时区计算似乎打破了这一点。有什么简单的方法可以解决这个问题吗?我的天真想法是对参数而不是字段进行“反向时区计算”。因此,如果“在时区x”增加了5个小时,我需要从参数中减去5个小时。对此有什么功能吗?

vltsax25

vltsax251#

当我们使用带有WHERE子句的任何函数或任何强制转换操作时,DB不能使用索引。为了使用索引,我们必须创建函数索引。使用时区创建索引。
示例:

CREATE INDEX table_index_name ON yourtable USING btree ((event_time AT TIME ZONE 'Europe/Berlin'));

相关问题