sql >> Databáze >  >> RDS >> Oracle

Jak zacházet s Day Light Saving v databázi Oracle

Odpověď zní:Záleží.

Celkem má vaše databáze tři časová pásma

  1. Časové pásmo vaší relace:SESSIONTIMEZONE

Toto můžete změnit pomocí ALTER SESSION SET TIME_ZONE=... kdykoliv. Je relevantní pro výsledek

  • CURRENT_DATE

  • LOCALTIMESTAMP

  • CURRENT_TIMESTAMP


Je to také cílové časové pásmo, když provedete CAST({TIMESTAMP/DATE without any timezone} AS TIMESTAMP WITH {LOCAL} TIME ZONE)

Výchozí SESSIONTIMEZONE lze nastavit pomocí proměnné prostředí ORA_SDTZ nebo (v systému Windows) záznamem registru HKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (pro 32 bitového klienta), resp. HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (pro 64bitového klienta).

  1. Časové pásmo databáze:DBTIMEZONE

Ve skutečnosti to není při každodenním používání tak důležité, je to relevantní pouze pro TIMESTAMP WITH LOCAL TIME ZONE sloupce datového typu a definuje formát úložiště.

Toto NE časové pásmo SYSDATE nebo SYSTIMESTAMP !!!

DBTIMEZONE nelze změnit ve vaší databázi, pokud databáze obsahuje tabulku s TIMESTAMP WITH LOCAL TIME ZONE a sloupec obsahuje data. Jinak jej lze změnit pomocí ALTER DATABASE SET TIME_ZONE='...'; . Změna se neprojeví, dokud nebude databáze vypnuta a restartována.

DBTIMEZONE je nastaveno při vytváření databáze. Pokud není při vytváření databáze zadáno žádné časové pásmo, pak Oracle jako výchozí použije časové pásmo operačního systému serveru.

  1. Časové pásmo operačního systému databázového serveru:

Toto časové pásmo je relevantní pro výsledek

  • SYSDATE

  • SYSTIMESTAMP


Toto časové pásmo samozřejmě nelze změnit na úrovni databáze. V případě, že vaše domovská země používá letní čas, může se toto časové pásmo dvakrát ročně změnit. Můžete to zjistit pomocí SELECT TO_CHAR(SYSTIMESTAMP, 'tzr') FROM dual; , například.

Pokud je tedy váš operační systém DB Server správně nastaven, měli byste od příštího týdne dostávat letní časy (alespoň pro Evropu)



  1. Upozornění:mysqli_connect():(HY000/2002):Žádný takový soubor nebo adresář

  2. Oprava:„Příkaz BACKUP LOG není povolen, když je model obnovy JEDNODUCHÝ“ v SQL Server (a SQL Edge)

  3. Sledujte mě na Twitteru během summitu Microsoft MVP příští týden

  4. Testování vrstvy ODBC