Postgresql

Postgres:為什麼 to_timestamp 在同一個查詢中返回具有不同時區的日期?

  • August 26, 2022

為什麼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

引用自:https://dba.stackexchange.com/questions/316072