Het antwoord is:het hangt ervan af.
In totaal heeft uw database drie tijdzones
- Uw sessietijdzone:
SESSIONTIMEZONE
Dit kun je veranderen door ALTER SESSION SET TIME_ZONE=...
te allen tijde. Het is relevant voor resultaat van
-
CURRENT_DATE
-
LOCALTIMESTAMP
-
CURRENT_TIMESTAMP
Het is ook de doeltijdzone wanneer u CAST({TIMESTAMP/DATE without any timezone} AS TIMESTAMP WITH {LOCAL} TIME ZONE)
doet
Standaard SESSIONTIMEZONE
kan worden ingesteld door omgevingsvariabele ORA_SDTZ
of (op Windows) door registervermelding HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ
(voor 32 bit Client), resp. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ
(voor 64 bit Client).
- De tijdzone van de database:
DBTIMEZONE
Eigenlijk is dit niet zo belangrijk bij dagelijks gebruik, het is alleen relevant voor TIMESTAMP WITH LOCAL TIME ZONE
gegevenstype kolommen en definieert het opslagformaat.
Dit is NIET de tijdzone van SYSDATE
of SYSTIMESTAMP
!!!
U kunt DBTIMEZONE
niet wijzigen op uw database als de database een tabel bevat met een TIMESTAMP WITH LOCAL TIME ZONE
kolom en de kolom bevat gegevens. Anders kan het worden gewijzigd met ALTER DATABASE SET TIME_ZONE='...';
. De wijziging wordt pas van kracht nadat de database is afgesloten en opnieuw is opgestart.
DBTIMEZONE
wordt ingesteld wanneer de database wordt gemaakt. Als er geen tijdzone is opgegeven tijdens het maken van de database, gebruikt Oracle standaard de tijdzone van het besturingssysteem van de server.
- De tijdzone van het besturingssysteem van de databaseserver:
Deze tijdzone is relevant voor resultaat van
-
SYSDATE
-
SYSTIMESTAMP
Uiteraard kan deze tijdzone niet worden gewijzigd op databaseniveau. Als uw thuisland zomertijd gebruikt, kan deze tijdzone twee keer per jaar veranderen. Je kunt het ondervragen met SELECT TO_CHAR(SYSTIMESTAMP, 'tzr') FROM dual;
, bijvoorbeeld.
Dus als uw DB Server-besturingssysteem correct is ingesteld, zou u vanaf volgende week zomertijden moeten krijgen (tenminste voor Europa)