在Oracle中,被指定的时区总是存储?

我已被我们的系统中测试该柱,并在一些地方的时间戳显示为:

26-FEB-09 11.36.25.390713 AM +13:00

但其他时候,它是:

26-FEB-09 11.36.25.390713 AM Pacific/Auckland

如果该值被存储为前者,是否意味着实际的时区不被存储?

我担心,因为如果将来的日期存储仅偏移,我们可能不能够确定在原来的时区的实际时间,因为您可以判断包含时区的偏移量,而不是相反。

由于

有帮助吗?

解决方案 2

我发现,当设置一个连接被打开ODP.NET内的时区和格式似乎解决此问题:

OracleGlobalization info = conn.GetSessionInfo();
info.TimeZone = "Pacific/Auckland";
info.TimeStampFormat = "DD-MON-YYYY HH:MI:SS.FF AM";
info.TimeStampTZFormat = "DD-MON-YYYY HH:MI:SS.FF AM TZR";
conn.SetSessionInfo(info);

其他提示

这是很容易测试

 create table foo ( tswtz TIMESTAMP WITH TIME ZONE);
    /

insert into foo values (TO_TIMESTAMP_TZ ('21-FEB-2009 18:00:00 -5:00', 'DD-MON-YYYY HH24:MI:SS TZH:TZM'));


insert into foo values (TO_TIMESTAMP_TZ ('21-FEB-2009 18:00:00 EST', 'DD-MON-YYYY HH24:MI:SS TZR'));
    select tswtz, extract(timezone_abbr from tswtz), extract(TIMEZONE_REGION from tswtz)
from foo;


TSWTZ         EXTRACT(TIMEZONE_ABBRFROMTSWTZ) EXTRACT(TIMEZONE_REGIONFROMTSWTZ)                                
------------- ------------------------------- ---------------------------------------------------------------- 
21-FEB-09 06.00.00.000000000 PM -05:00   UNK                          UNKNOWN                                                          
21-FEB-09 06.00.00.000000000 PM EST      EST                             EST                                                              

2 rows selected

它存储你告诉它。如果你告诉它的偏移量,该偏移可能是很好的一个或多个时区,所以为什么会随便挑一个?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top