PostgreSQL - 以当地时间提取日期范围?

PostgreSQL - extracting date ranges in local time?

当前情况:

问题:

我有一个方法可以获取每条记录的时区,所以我不需要这方面的帮助。

我为此创建了一个测试 table,其中包含一个 timestamptz 字段 ts_with 和一个用于时区 tz 的 varchar 字段。下面的查询returns是我想要的,所以我觉得我在进步。

SELECT 
    name, test_tz.ts_with, test_tz.tz, 
    TIMEZONE(test_tz.tz, test_tz.ts_with) as timezone_with
FROM fire_info.test_tz
WHERE TIMEZONE(test_tz.tz, test_tz.ts_with) BETWEEN 
    '2018-08-07 00:00:00' AND '2018-08-07 23:59:59';

问题:

谢谢!!!

您编写查询的方式无法在 ts_with 上使用索引。

要使用索引,条件必须采用 ts_with <operator> <constant> 形式,并且无法以这种方式重写查询。

因此您应该在 timezone(test_tz.tz, test_tz.ts_with) 上创建第二个索引。