it-swarm.com.de

Unterschiedliche CURRENT_TIMESTAMP und SYSDATE in Oracle

Nach dem Ausführen dieser SQL in Oracle 10g:

SELECT SYSDATE, CURRENT_TIMESTAMP  FROM DUAL

Ich erhalte diese seltsame Ausgabe: Toad output for query

Was ist der Grund für den Zeitunterschied? .__ Die Serverzeit entspricht dem SYSDATE-Wert

40
Mohsen Kashi

CURRENT_DATE und CURRENT_TIMESTAMP gibt das aktuelle Datum und die aktuelle Uhrzeit in der Zeitzone der Sitzung zurück.

SYSDATE und SYSTIMESTAMP geben Systemdatum und -uhrzeit zurück, d. h. des Systems, auf dem sich die Datenbank befindet.

Wenn sich Ihre Clientsitzung nicht in derselben Zeitzone befindet wie der Server, in dem sich die Datenbank befindet (oder über Ihre NLS-Einstellungen sagt, dass dies nicht der Fall ist), werden beim Mischen der Funktionen SYS* und CURRENT_* andere Werte zurückgegeben. Sie sind alle korrekt, sie repräsentieren nur verschiedene Dinge. Es sieht so aus, als ob Ihr Server sich in einer Zeitzone von +4: 00 befindet (oder denkt, dass er es ist), während sich Ihre Clientsitzung in einer Zeitzone von +4: 30 befindet.

Wenn die Uhren nicht synchronisiert sind, kann es auch zu kleinen Zeitunterschieden kommen, was hier kein Problem darstellt.

65
Alex Poole

SYSDATE, SYSTIMESTAMP gibt das Datum und den Zeitstempel der Datenbank zurück, wohingegen current_date, current_timestamp das Datum und den Zeitstempel des Ortes zurückgibt, von dem aus Sie arbeiten.

Für zB Von Indien aus greife ich auf eine Datenbank in Paris zu. um 16.00 Uhr IST:

select sysdate,systimestamp from dual; 

Dies gibt mir das Datum und die Uhrzeit von Paris zurück:

ERGEBNIS

12-MAY-14   12-MAY-14 12.30.03.283502000 PM +02:00

select current_date,current_timestamp from dual; 

Dies gibt mir das Datum und die Uhrzeit von Indien zurück:

ERGEBNIS

12-MAY-14   12-MAY-14 04.00.03.283520000 PM ASIA/CALCUTTA

Bitte beachten Sie den Zeitunterschied von 3:30.

14

SYSDATE gibt das Systemdatum des Systems zurück, auf dem sich die Datenbank befindet

CURRENT_TIMESTAMP gibt das aktuelle Datum und die aktuelle Uhrzeit in der Sitzungszeitzone im Datentyp TIMESTAMP WITH TIME ZONE zurück

führen Sie diesen Befehl aus

    ALTER SESSION SET TIME_ZONE = '+3:0';

und es wird Ihnen das gleiche Ergebnis liefern.

3
Harshit
  • SYSDATE gibt Datum und Uhrzeit eines Servers an.
  • CURRENT_DATE liefert Datum und Uhrzeit des Kunden (d. h. Ihr System)
  • CURRENT_TIMESTAMP liefert Daten und Zeitstempel einer Klinik.
1
reddy

Hinweis: SYSDATE - gibt nur das Datum zurück, d. H. "JJJJ-MM-TT" ist nicht korrekt. SYSDATE gibt das Systemdatum des Datenbankservers einschließlich Stunden, Minuten und Sekunden zurück. Zum Beispiel:

SELECT SYSDATE FROM DUAL; gibt die Ausgabe ähnlich wie folgt aus: 15.12.2017, 12:42:39 Uhr

0
Amir Abe