Отговорът е:Зависи.
Общо вашата база данни има три часови зони
- Часовата зона на вашата сесия:
SESSIONTIMEZONE
Това можете да промените чрез ALTER SESSION SET TIME_ZONE=...
по всяко време. Това е от значение за резултата от
-
CURRENT_DATE
-
LOCALTIMESTAMP
-
CURRENT_TIMESTAMP
Това е и целевата часова зона, когато правите CAST({TIMESTAMP/DATE without any timezone} AS TIMESTAMP WITH {LOCAL} TIME ZONE)
По подразбиране SESSIONTIMEZONE
може да се зададе от променлива на средата ORA_SDTZ
или (в Windows) чрез запис в системния регистър HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ
(за 32-битов клиент), респ. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ
(за 64-битов клиент).
- Часовата зона на базата данни:
DBTIMEZONE
Всъщност това не е толкова важно при ежедневна употреба, важи само за TIMESTAMP WITH LOCAL TIME ZONE
колони тип данни и дефинира формата за съхранение.
Това еНЕ часовата зона на SYSDATE
или SYSTIMESTAMP
!!!
Не можете да промените DBTIMEZONE
във вашата база данни, ако базата данни съдържа таблица с TIMESTAMP WITH LOCAL TIME ZONE
колона и колоната съдържа данни. В противен случай може да се промени с ALTER DATABASE SET TIME_ZONE='...';
. Промяната не влиза в сила, докато базата данни не бъде изключена и рестартирана.
DBTIMEZONE
се задава при създаване на база данни. Ако по време на създаването на база данни не е предоставена часова зона, Oracle по подразбиране задава часовата зона на операционната система на сървъра.
- Часовата зона на операционната система на сървъра на база данни:
Тази часова зона е подходяща за резултат от
-
SYSDATE
-
SYSTIMESTAMP
Естествено тази часова зона не може да бъде променена на ниво база данни. В случай, че вашата страна използва лятно часово време, тази часова зона може да се променя два пъти годишно. Можете да го разпитате с SELECT TO_CHAR(SYSTIMESTAMP, 'tzr') FROM dual;
, например.
Така че, ако вашата DB Server OS е настроена правилно, тогава трябва да получите летни часове от следващата седмица (поне за Европа)