sql >> Databasteknik >  >> RDS >> Oracle

Hur man hanterar sommartid i Oracle-databasen

Svaret är:Det beror på.

Totalt har din databas tre tidszoner

  1. Din sessions tidszon:SESSIONTIMEZONE

Detta kan du ändra genom att ALTER SESSION SET TIME_ZONE=... närsomhelst. Det är relevant för resultatet av

  • CURRENT_DATE

  • LOCALTIMESTAMP

  • CURRENT_TIMESTAMP


Det är också måltidszonen när du gör CAST({TIMESTAMP/DATE without any timezone} AS TIMESTAMP WITH {LOCAL} TIME ZONE)

Standard SESSIONTIMEZONE kan ställas in av miljövariabeln ORA_SDTZ eller (på Windows) genom registerpost HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (för 32 bitars klient), resp. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (för 64-bitars klient).

  1. Databasens tidszon:DBTIMEZONE

Egentligen är detta inte så viktigt i daglig användning, det är endast relevant för TIMESTAMP WITH LOCAL TIME ZONE datatyp kolumner och definierar lagringsformatet.

Det här är INTE tidszonen för SYSDATE eller SYSTIMESTAMP !!!

Du kan inte ändra DBTIMEZONE på din databas om databasen innehåller en tabell med en TIMESTAMP WITH LOCAL TIME ZONE kolumnen och kolumnen innehåller data. Annars kan det ändras med ALTER DATABASE SET TIME_ZONE='...'; . Ändringen träder inte i kraft förrän databasen har stängts av och startat om.

DBTIMEZONE ställs in när databasen skapas. Om ingen tidszon tillhandahålls när databasen skapas, används Oracle som standard till tidszonen för serverns operativsystem.

  1. Tidszonen för databasserverns operativsystem:

Denna tidszon är relevant för resultatet av

  • SYSDATE

  • SYSTIMESTAMP


Naturligtvis kan denna tidszon inte ändras på databasnivå. Om ditt hemland använder sommartid kan denna tidszon ändras två gånger om året. Du kan fråga den med SELECT TO_CHAR(SYSTIMESTAMP, 'tzr') FROM dual; , till exempel.

Så om ditt DB Server OS är korrekt konfigurerat bör du få sommartider från och med nästa vecka (åtminstone för Europa)



  1. Pivottabell med icke-kardinalvärden

  2. Hur man ändrar storlek på formulärkontroller i Access 2016

  3. SUM() Funktion i MySQL

  4. Undersöker ett ORA 028513 DG4ODBC-fel