sql >> Database >  >> RDS >> Oracle

Hoe om te gaan met daglichtbesparing in de Oracle-database?

Het antwoord is:het hangt ervan af.

In totaal heeft uw database drie tijdzones

  1. 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).

  1. 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.

  1. 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)



  1. Kies uit de ene tafel waar niet in een andere

  2. Werken met Salesforce.com in Alpha Anywhere

  3. Groeperen op twee velden gebruiken en tellen in SQL

  4. Gegevenstabel doorgeven als parameter aan opgeslagen procedures