2014-01-26 35 views
1

看看下面的例子:你能從Postgresql的TIMESTAMP WITH TIME ZONE字段中恢復完整的時區名稱嗎?

create temporary table t1 (c1 timestamp with time zone); 
insert into t1 values ('2003-04-12 04:05:06 America/New_York'::timestamp with time zone); 

如果我正確地閱讀文檔,這裏PostgreSQL將使用完整的時區名加入到+05的時間戳轉換成UTC:00小時,然後存儲。

但是,如果這是真的,那麼我不能區分2003-04-12 04:05:06 America/New_York2003-04-12 04:05:06 America/Panama,它具有相同的UTC偏移但夏令時偏移量不同。

是嗎?

回答

0

雖然確實存在,但無法達到原來的指定時區。我相信當帶有時區的時間戳被存儲時,它將被轉換爲postgres到時間戳和偏移+ HHMM,包括時區的夏令時。我做了一個實驗:

create temporary table t1 (c1 timestamp with time zone); 
insert into t1 values ('2003-04-12 04:05:06 America/New_York'::timestamp with time zone); 
insert into t1 values ('2003-04-12 04:05:06 America/Panama'::timestamp with time zone); 


nsp=# select c1 at time zone 'utc' from t1; 
     timezone  
--------------------- 
2003-04-12 08:05:06 
2003-04-12 09:05:06 
(2 rows) 

這些對我來說似乎是正確的。在2003年,巴拿馬是UTC-5,沒有夏令時。 2003年美國/紐約從4月6日(UTC-4)減去一小時。所以,時間是正確的,你可以分辨兩者的區別。

-g

相關問題