Svaret er:Det afhænger af.
Din database har i alt tre tidszoner
- Din sessions tidszone:
SESSIONTIMEZONE
Dette kan du ændre ved at ALTER SESSION SET TIME_ZONE=...
når som helst. Det er relevant for resultatet af
-
CURRENT_DATE
-
LOCALTIMESTAMP
-
CURRENT_TIMESTAMP
Det er også måltidszonen, når du laver CAST({TIMESTAMP/DATE without any timezone} AS TIMESTAMP WITH {LOCAL} TIME ZONE)
Standard SESSIONTIMEZONE
kan indstilles af miljøvariablen ORA_SDTZ
eller (på Windows) af registreringsdatabasen HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ
(til 32 bit Client), hhv. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ
(til 64 bit klient).
- Databasens tidszone:
DBTIMEZONE
Faktisk er dette ikke så vigtigt i daglig brug, det er kun relevant for TIMESTAMP WITH LOCAL TIME ZONE
datatypekolonner og definerer lagringsformatet.
Dette er IKKE tidszonen for SYSDATE
eller SYSTIMESTAMP
!!!
Du kan ikke ændre DBTIMEZONE
på din database, hvis databasen indeholder en tabel med et TIMESTAMP WITH LOCAL TIME ZONE
kolonne, og kolonnen indeholder data. Ellers kan det ændres med ALTER DATABASE SET TIME_ZONE='...';
. Ændringen træder ikke i kraft, før databasen er blevet lukket ned og genstartet.
DBTIMEZONE
indstilles, når databasen oprettes. Hvis der ikke er angivet nogen tidszone under oprettelse af databasen, vil Oracle som standard bruge tidszonen for serverens operativsystem.
- Tidszonen for databaseserverens operativsystem:
Denne tidszone er relevant for resultatet af
-
SYSDATE
-
SYSTIMESTAMP
Denne tidszone kan naturligvis ikke ændres på databaseniveau. Hvis dit hjemland bruger sommertid, kan denne tidszone ændre sig to gange om året. Du kan udspørge det med SELECT TO_CHAR(SYSTIMESTAMP, 'tzr') FROM dual;
, for eksempel.
Så hvis dit DB Server OS er konfigureret korrekt, bør du få sommertider fra næste uge af (i hvert fald for Europa)