sysdate и dbtimezone различаются в базе данных Oracle - PullRequest
0 голосов
/ 27 сентября 2018

С этим запросом: select sysdate from dual;

результат: 27-09-2018 07:50:50 - это UK время

с: Select dbtimezone from dual;

вывод: +10:00

Я хочу, чтобы sysdate был того же часового пояса, что и dbtimezone

Я пытался сделать это с alter database set time_zone='AEST', но я немного запутался, если этоправильное решение.

Любая помощь наиболее ценится.Спасибо.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Распространенным заблуждением является то, что DBTIMEZONE является часовым поясом для SYSDATE, а SYSTIMESTAMP

SYSDATE и SYSTIMESTAMP возвращаются в часовом поясе операционной системы, в которой база данныхСервер находится.

DBTIMEZONE - это (внутренний) часовой пояс значений TIMESTAMP WITH LOCAL TIME.Я не знаю практического использования этого.Обратите внимание, что вы не можете изменить DBTIMEZONE в своей базе данных, если база данных содержит таблицу со столбцом TIMESTAMP WITH LOCAL TIME ZONE, а столбец содержит данные.

Если вы хотите, чтобы текущее время в DBTIMEZONE выполнялось

select SYSTIMESTAMP AT TIME ZONE DBTIMEZONE 
from dual;

CURRENT_TIMESTAMP AT TIME ZONE DBTIMEZONE также работает.

См. Также Как работать с дневным светом в базе данных Oracle

0 голосов
/ 27 сентября 2018

SYSDATE возвращает текущую дату и время, установленные для операционной системы, в которой находится сервер базы данных.

CURRENT_DATE возвращает текущую дату вчасовой пояс сеанса.

show parameter nls_date_format

NAME                           TYPE        VALUE
------------------------------ ----------- ------------------------
nls_date_format                string      dd-Mon-yyyy hh24:mi:ss


select sysdate, current_date, dbtimezone from dual;

SYSDATE              CURRENT_DATE         DBTIME
-------------------- -------------------- ------
27-Sep-2018 08:16:00 27-Sep-2018 08:16:00 +00:00


alter session set time_zone = '+08:00';

Session altered.


select sysdate, current_date, dbtimezone from dual;

SYSDATE              CURRENT_DATE         DBTIME
-------------------- -------------------- ------
27-Sep-2018 08:13:06 27-Sep-2018 15:13:06 +00:00
...