Postgresql
Postgres:為什麼 to_timestamp 在同一個查詢中返回具有不同時區的日期?
為什麼
to_timestamp
在同一個查詢中使用不同的時區來顯示紀元?注意+02
與+01
。=> select to_timestamp(1651157248),to_timestamp(1647224832); to_timestamp | to_timestamp ------------------------+------------------------ 2022-04-28 16:47:28+02 | 2022-03-14 03:27:12+01 (1 row) => select version(); version ---------------------------------------------------------------------------------------------------------------------------------------- PostgreSQL 12.12 (Ubuntu 12.12-0ubuntu0.20.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, 64-bit (1 row) => show timezone; TimeZone --------------- Europe/Vienna (1 row)
可能與 3 月底從冬至夏時的轉換有關,
+01
對應CET
和。+02``CEST
我如何使用
to_timestamp
它以使其始終使用相同的時間偏移量(無論是哪一個)?
奧地利有夏令時,因此 PostgreSQL 將在冬季顯示時間戳,其 UTC 偏移量與春季時間戳不同。
to_timestamp
將 UTC 紀元轉換為 (時區無關!)timestamp with time zone
。僅當timestamp with timezone
呈現為字元串時,才會根據 的目前設置來完成timezone
。您的所有時間戳都顯示在同一時區:
Europe/Vienna
. 該時區在一年中的不同時間與 UTC 有不同的偏移量。如果您希望以相同的 UTC 偏移量顯示所有時間戳,請選擇timezone
沒有夏令時的設置,例如UTC
或+02
。