Oracle TIMESTAMP With TIMEZONE именованный пояс против смещения

StackOverflow https://stackoverflow.com/questions/588286

Вопрос

В 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