Может быть, посмотрите на База данных часовых поясов IANA , которая также используется базой данных Oracle.
Для America/Los_Angeles
вы видите эту запись:
От Пола Эггертта (2018-03-20): предложение Дауда оставило многие детали нерешенными, например, где проводить черты между часовыми поясами.Ключевым человеком, который заставил часовые пояса работать в США, был Уильям Фредерик Аллен - железнодорожный инженер, управляющий редактор Руководства для путешественников и секретарь General Time Convention, группы по железнодорожной стандартизации.Аллен провел месяцы в диалогах с научными и железнодорожными руководителями, разработал работоспособный план по созданию часовых поясов и представил его на Общем собрании времени 1883-04-11, заявив, что его план означал, что «местное время будет практически отменено» -плюс для железнодорожного планирования.К следующему соглашению 1883-10-11 почти все железные дороги согласились, и оно вступило в силу 1883-11-18.Это воскресенье называлось "днем двух полудней", поскольку в некоторых местах полдень отмечался дважды.Аллен был свидетелем перехода в Нью-Йорке, написав:
Я слышал колокола забастовки Святого Павла в старое время.Четыре минуты спустя, послушный электрическому сигналу из Морской обсерватории ... шарик времени быстро спустился, звон старой Троицы прозвенел двенадцатью измеренными ударами, и местное время было заброшено, вероятно, навсегда.
Большая часть США вскоре последовала их примеру.См .: Бартки И.Р.Принятие стандартного времени.Technol Cult 1989 Jan; 30 (1): 25-56.https://dx.doi.org/10.2307/3105430
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
Rule CA 1948 only - Mar 14 2:01 1:00 D
Rule CA 1949 only - Jan 1 2:00 0 S
Rule CA 1950 1966 - Apr lastSun 1:00 1:00 D
Rule CA 1950 1961 - Sep lastSun 2:00 0 S
Rule CA 1962 1966 - Oct lastSun 2:00 0 S
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02
-8:00 US P%sT 1946
-8:00 CA P%sT 1967
-8:00 US P%sT
Вы видите до 18 ноября 1883 г. часовой пояс America/Los_Angeles
не UTC-08:00
, а UTC-07:52
(смещение часового пояса в формате UTC учитывает только часы / минуты, но не секунды)
Когда вы вводите timestamp '0912-02-29 02:02:10.089'
в столбец TIMESTAMP WITH TIME ZONE
или TIMESTAMP WITH LOCAL TIME ZONE
, Oracle фактически выполняет
FROM_TZ(timestamp '0912-02-29 02:02:10.089', SESSIONTIMEZONE)
Вы ввели дату 0912-02-29
, которая предшествует 1883 году, но я неЯ не знаю точно, почему вы получаете разницу в результате.Возможно, в определенный момент Oracle игнорирует, что America/Los_Angeles
не был равен UTC-08:00
до 1883 года - это можно считать ошибкой.
В любом случае, Oracle рекомендует установить DBTIMEZONE = UTC
, иначе ничего не делаетсмысл на мой взгляд.