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

Oracle 10g Time Zone Confusion

Ve skutečnosti jsou zde 3 časová pásma, nikoli 2

  • časové pásmo relace/klienta
    • Zobrazeno v SESSIONTIMEZONE
    • Toto je časové pásmo CURRENT_DATE, LOCALTIMESTAMP a CURRENT_TIMESTAMP. Rozdíl mezi těmito 3 je návratový typ, vrací DATE, TIMESTAMP a TIMESTAMP S TIME ZONE)
  • Časové pásmo databáze
    • Zobrazeno v DBTIMEZONE
    • Toto je časové pásmo používané pro interní úložiště hodnot TIMESTAMP WITH LOCAL TIME ZONE. Všimněte si, že hodnoty jsou převedeny do/z časového pásma relace při vložení/výběru, takže to ve skutečnosti není tak důležité, jak se zdá
    • Toto NENÍ časové pásmo SYSDATE/SYSTIMESTAMP
  • Časové pásmo operačního systému databáze
    • V unixu je při spuštění Oracle založen na proměnné TZ
    • Toto je časové pásmo SYSDATE a SYSTIMESTAMP

Ve vašem prvním příkladu vidím, že relace TZ je UTC-6, databáze TZ je UTC a časové pásmo OS databáze je UTC-6.

Ve vašem druhém příkladu vidím, že TZ relace je UTC-6, TZ databáze je UTC+2 a časové pásmo OS databáze je UTC+1.



  1. Někdy MŮŽETE převést sloupec na místě

  2. Oracle - Proč zmizí úvodní nula čísla při převodu na TO_CHAR

  3. Užitečné tipy pro řešení běžných chyb v MySQL

  4. Nástroje pro práci s uloženými procedurami v Oracle v týmu?