Тип возврата TO_TIMESTAMP
равен timestamp with time zone
. Показанное время указано в часовом поясе текущего сеанса (со смещением UTC).
SET SESSION timezone TO 'CET';
SET
knayak=# SELECT to_timestamp('20190608070000', 'YYYYMMDDHH24MISS');
to_timestamp
------------------------
2019-06-08 07:00:00+02
Когда вы преобразуете его с помощью AT TIME ZONE
, оно покажет время в UTC, когда в текущем часовом поясе 07:00
часов.
SELECT to_timestamp('20190608070000', 'YYYYMMDDHH24MISS') AT time zone 'UTC';
timezone
---------------------
2019-06-08 05:00:00
(1 row)
Итак, если вы хотите прочитать вашу метку времени в нужном формате и трактовать ее как UTC, приведите вывод to_timestamp
явно к timestamp
(без часового пояса) и затем примените AT TIME ZONE
.
SELECT to_timestamp('20190608070000', 'YYYYMMDDHH24MISS') :: timestamp
AT time zone 'UTC';
timezone
------------------------
2019-06-08 09:00:00+02
(1 row)