PostgreSQL 获取当前时区的结果

PostgreSQL get results in current time zone

如标题所述,我想查询 returns 我当前时区的时间戳值(甚至根据夏令时!)。

my_table 是:

|timestamp|name|value|property1|property2|
|---|---|---|---|---|
|2021-08-01 00:00:00+00|10|0.44|0|0|
|2021-08-01 00:05:00+00|15|0.76|0|0|
|2021-08-01 00:10:00+00|12|0.28|0|0|

(不要问我为什么我不能把这个 table 直接放在 markdown 中...可能是因为日期)

现在,例如,如果我现在必须 select 对应于我所在时区的一整天的 24 小时,我的解决方案是:

SELECT timestamp AT TIME ZONE 'CEST',name,value
FROM my_table
WHERE name IN (10,11,12)
AND timestamp BETWEEN '2021-08-01 00:00:00+02' AND '2021-08-02 00:00:00+02' 
ORDER BY timestamp DESC

如您所见,此处存在问题:

有一种方法可以避免这种概念上的重复吗??任何改进查询的建议都值得赞赏

命令 SELECT version(); 返回 PostgreSQL 12.7

适当设置会话的时区。

set timezone TO 'Europe/Berlin';

select '2021-08-01 00:00:00+00'::timestamptz;
      timestamptz       
------------------------
 2021-08-01 02:00:00+02

select '2021-12-01 00:00:00+00'::timestamptz;
      timestamptz       
------------------------
 2021-12-01 01:00:00+01

select '2021-08-01 00:00:00'::timestamptz;
      timestamptz       
------------------------
 2021-08-01 00:00:00+02

您现在设置的会话时区是多少?