Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle 10g Zeitzonenverwirrung

Hier gibt es eigentlich 3 Zeitzonen, nicht 2

  • die Zeitzone der Sitzung/des Clients
    • In SESSIONTIMEZONE angezeigt
    • Dies ist die Zeitzone von CURRENT_DATE, LOCALTIMESTAMP und CURRENT_TIMESTAMP. Der Unterschied zwischen diesen 3 ist der Rückgabetyp, sie geben DATE, TIMESTAMP bzw. TIMESTAMP WITH TIME ZONE zurück)
  • Die Zeitzone der Datenbank
    • In DBTIMEZONE angezeigt
    • Dies ist die Zeitzone, die für die interne Speicherung von TIMESTAMP WITH LOCAL TIME ZONE-Werten verwendet wird. Beachten Sie, dass die Werte beim Einfügen/Auswählen in die/aus der Sitzungszeitzone konvertiert werden, sodass dies eigentlich nicht so wichtig ist, wie es scheint
    • Dies ist NICHT die Zeitzone von SYSDATE/SYSTIMESTAMP
  • Die Zeitzone des Betriebssystems der Datenbank
    • In Unix basiert es auf der TZ-Variablen, wenn Oracle gestartet wird
    • Dies ist die Zeitzone von SYSDATE und SYSTIMESTAMP

In Ihrem ersten Beispiel kann ich sehen, dass die TZ der Sitzung UTC-6, die TZ der Datenbank UTC und die Zeitzone des Betriebssystems der Datenbank UTC-6 ist.

In Ihrem zweiten Beispiel sehe ich, dass die TZ der Sitzung UTC-6, die TZ der Datenbank UTC+2 und die Zeitzone des Betriebssystems der Datenbank UTC+1 ist.