Мне нужно добавить информацию о часовом поясе в таблицу базы данных с указанием местоположений, поддерживаемых пользователем Доступ к данным будет в основном из кода Java, но также есть код PL / SQL и Win32 (Delphi), который должен понимать информацию о часовом поясе.
Кажется, прямо использовать идентификатор из java.util.TimeZone. Java может легко конвертировать это (очевидно), Hibernate имеет встроенную поддержку для него, и, очевидно, Oracle также понимает эти идентификаторы часовых поясов:
select TZ_OFFSET('Pacific/Marquesas') from dual.
Проблема в том, что идентификаторы часовых поясов несовместимы с БД часовых поясов Windows. Например, идентификатор java.util.timezone "Pacific / Marquesas" (-09: 30) отсутствует в списке выбора часовых поясов в Windows. Реестр не содержит его вообще; см
\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
Здесь я могу выбрать только -09: 00 или -10: 00. Итак, если бы я должен был хранить часовой пояс, как это, как я могу получить фактическую информацию о смещении / DST в Windows (без Java)? Надеюсь, для этого не требуется таблица сопоставления, которую я должен обновлять всякий раз, когда она меняется. Существует ли общепринятый стандарт, который работает лучше, чем идентификатор часового пояса Java?
Обновление
Информация о часовом поясе используется в сочетании со столбцами DATE в базе данных. Эти столбцы содержат локальные значения даты / времени. Если местоположение может быть связано с этими значениями, часовой пояс местоположения позволяет мне при необходимости конвертировать значение даты / времени в UTC или любой другой часовой пояс.
Я понимаю, что вместо DATE более подходящим будет тип данных TIMESTAMP_TZ или что-то подобное. Однако это потребует переноса данных (для которого снова требуется TZ) и не поддерживается устаревшими приложениями, которые также работают с данными (если не изменен большой объем кода). Проблема почти такая же, если бы мне пришлось конвертировать значения в UTC.
Суть в том, что мне нужно хранить значения DATE по местному времени, но для некоторых из них мне нужно знать, что означает TZ.