Существует способ получения часового пояса базы данных базы данных?
Да, вы можете сделать
SELECT TO_CHAR(SYSTIMESTAMP, 'TZR') FROM dual;
or
SELECT EXTRACT(TIMEZONE_REGION FROM SYSTIMESTAMP) FROM dual;
Какова роль времени базы данных в этом?
Фактически это не имеет отношения к повседневному использованию, оно используется только для столбцов данных типа TIMESTAMP WITH LOCAL TIME ZONE
и определяет формат хранения.
Возьмите следующую аналогию, чтобы понять DBTIMEZONE
и TIMESTAMP WITH LOCAL TIME ZONE
: Всякий раз, когда вы должны работать с часовыми поясами общий подход заключается в хранении все раз в UTC и конвертировать время в прикладном уровне в соответствии с текущими настройками пользователя.
Точно так же работает TIMESTAMP WITH LOCAL TIME ZONE
, но на SQL-уровне. Только разница: Oracle не хранит TIMESTAMP WITH LOCAL TIME ZONE
раз, зафиксированный на UTC время, но в DBTIMEZONE время. Следовательно, вы не можете изменить DBTIMEZONE
в своей базе данных, если база данных содержит таблицу с столбцом TIMESTAMP WITH LOCAL TIME ZONE
, а в столбце содержатся данные.
Большое спасибо! Странная часть состоит в том, что первый результат запроса «НЕИЗВЕСТНО», а второй - «-3: 00». – rlartiga
Я предполагаю, что 'TZR' возвращает только значение, если вы имеете полное имя региона, например. 'Европа/Zurich'. Обычно DBTIMEZONE устанавливается как смещение UTC, а не область часового пояса, т. Е. Смещение является постоянным в течение всего года, и вы не применяете летнее время. –
Хорошо спасибо, я думал то же самое. – rlartiga