Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So handhaben Sie die Sommerzeit in der Oracle-Datenbank

Antwort ist:Es kommt darauf an.

Insgesamt hat Ihre Datenbank drei Zeitzonen

  1. Ihre Sitzungszeitzone:SESSIONTIMEZONE

Dies können Sie mit ALTER SESSION SET TIME_ZONE=... ändern jederzeit. Es ist relevant für das Ergebnis von

  • CURRENT_DATE

  • LOCALTIMESTAMP

  • CURRENT_TIMESTAMP


Es ist auch die Zielzeitzone, wenn Sie CAST({TIMESTAMP/DATE without any timezone} AS TIMESTAMP WITH {LOCAL} TIME ZONE) ausführen

Standard SESSIONTIMEZONE kann durch die Umgebungsvariable ORA_SDTZ gesetzt werden oder (unter Windows) durch den Registrierungseintrag HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (für 32 Bit Client), bzw. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (für 64-Bit-Client).

  1. Die Zeitzone der Datenbank:DBTIMEZONE

Eigentlich ist dies im täglichen Gebrauch nicht so wichtig, es ist nur relevant für TIMESTAMP WITH LOCAL TIME ZONE Datentypspalten und definiert das Speicherformat.

Das ist NICHT die Zeitzone von SYSDATE oder SYSTIMESTAMP !!!

Sie können DBTIMEZONE nicht ändern auf Ihrer Datenbank, wenn die Datenbank eine Tabelle mit einem TIMESTAMP WITH LOCAL TIME ZONE enthält Spalte und die Spalte enthält Daten. Andernfalls kann es mit ALTER DATABASE SET TIME_ZONE='...'; geändert werden . Die Änderung wird erst wirksam, nachdem die Datenbank heruntergefahren und neu gestartet wurde.

DBTIMEZONE wird gesetzt, wenn die Datenbank erstellt wird. Wenn während der Datenbankerstellung keine Zeitzone angegeben wird, verwendet Oracle standardmäßig die Zeitzone des Betriebssystems des Servers.

  1. Die Zeitzone des Betriebssystems des Datenbankservers:

Diese Zeitzone ist relevant für das Ergebnis von

  • SYSDATE

  • SYSTIMESTAMP


Diese Zeitzone kann natürlich nicht auf Datenbankebene geändert werden. Falls in Ihrem Heimatland die Sommerzeit verwendet wird, kann sich diese Zeitzone zweimal im Jahr ändern. Sie können es mit SELECT TO_CHAR(SYSTIMESTAMP, 'tzr') FROM dual; abfragen , zum Beispiel.

Wenn Ihr DB-Server-Betriebssystem also richtig eingerichtet ist, sollten Sie ab nächster Woche Sommerzeiten erhalten (zumindest für Europa)