Postgresql Postgres时间:时区转换错误

Postgresql Postgres时间:时区转换错误,postgresql,Postgresql,让我们假设我们有一些日期,例如2018-06-25T06:00:00Z。因此,如果我执行以下操作,我将获得相同的日期: select '2018-06-25T06:00:00Z'::timestamp at time zone 'UTC'; 现在,我想知道这个日期的当地时间,由于我位于赫尔辛基,我做了以下工作: select '2018-06-25T06:00:00Z'::timestamp at time zone 'Europe/Helsinki'; 据我所知,赫尔辛基目前是+3小时,我

让我们假设我们有一些日期,例如
2018-06-25T06:00:00Z
。因此,如果我执行以下操作,我将获得相同的日期:

select '2018-06-25T06:00:00Z'::timestamp at time zone 'UTC';
现在,我想知道这个日期的当地时间,由于我位于赫尔辛基,我做了以下工作:

select '2018-06-25T06:00:00Z'::timestamp at time zone 'Europe/Helsinki';
据我所知,赫尔辛基目前是+3小时,我的期望是获得
2018-06-25 09:00:00.000000
,然而,出于某种原因,我获得
2018-06-25 03:00:00.000000

那么,为什么它决定扣除这3个小时而不是将其相加呢?


请注意,此
选择当前设置(“时区”)
返回
UTC

您的第二条语句将给定的时间戳解释为欧洲/赫尔辛基时区的时间戳,并将其转换为带时区的
时间戳
psql
根据
会话时区打印时间戳的结果

要将时间戳从UTC转换为欧洲/赫尔辛基,您应使用带时区的时间戳:

SELECT '2018-06-25T06:00:00Z'::TIMESTAMPTZ AT TIME ZONE 'Europe/Helsinki';
这将创建一个时间戳并将其转换为欧洲/赫尔辛基。您可以通过以下方式更改输出的时区:

SET SESSION TIMEZONE TO 'Europe/Helsinki';