sql >> Database teknologi >  >> RDS >> Oracle

Sådan håndteres sommertid i Oracle-databasen

Svaret er:Det afhænger af.

Din database har i alt tre tidszoner

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

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

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



  1. VARCHAR og NVARCHAR datatyper i SQL Server

  2. MySQL NULLIF() Forklaret

  3. Sikre filer til download

  4. mysql lagret procedure, der kalder sig selv rekursivt