Zum Inhalt springen

TIMESTAMP vergleich


whizzle

Empfohlene Beiträge

Hallo zusammen,

mein Code gibt mir folgende Trace-Meldungen:

Aktuelle Zeit: <23-MAY-05 01.12.45.374533000 PM +02:00>;

Zeit_Aktion: <23-MAY-05 01.12.38.247789 PM>;

Restzeit: <+00 01:59:52.873404>

Hintergrund ist folgender: Es existiert eine Tabelle, welche Events definiert und dazu die Zeit, zu der das Event ausgeführt werden soll (s.o. Zeit_Aktion). Der Datentyp ist TIMESTAMP. Nun holt sich die SW die aktuelle Zeit per SYSTIMESTAMP (s.o. Aktuelle Zeit) und berechnet die Restdauer bis zur Eventausführung (also Zeit_Aktion minus Aktuelle Zeit), falls Zeit_Aktion > Aktuelle Zeit. Das Ergebnis wird in einer Variable vom Typ INTERVAL DAY TO SECOND festgehalten und im Trace als Restzeit ausgegeben.

Was ich nicht verstehe: wie oben zu sehen, beträgt die Differenz zw. Aktueller Zeit und Zeit_Aktion knapp 2h (siehe Restzeit), obwohl die Zeiten selbst nur Sekunden auseinanderliegen. Außerdem ist für die SW der Vergleich (Zeit_Aktion > Aktuelle Zeit) TRUE.

Kann mir das bitte jemand erklären?!? Die Datenbank ist übrigens eine Oracle 9i.

Thx

Link zu diesem Kommentar
Auf anderen Seiten teilen

die beiden zeitangaben sind in unterscheidlichen zeitzonen, zu sehen daran das aktuelle zeit ein +02:00 dahinter hat

ich schätze dass das programmintern erkannt wird und die zeit_aktion ein +2 stunden bekommt und dann erst die differenz berechnet wird.

aber wieso er sagt das zeit_aktion > zeit_aktuell wahr ist versteh ich irgendwie auch nicht o_O

Link zu diesem Kommentar
Auf anderen Seiten teilen

@SNOWMAN

die frage beantwortest du doch selber:

Zeit_Aktion + (2h Zeitzonenunterschied) > Aktuelle Zeit

Das Verhalten ist mir zwar so auch nicht bekannt. Aber erklärbar.

Der Rechner Läuft auf MESZ (Also UTC +2)

Die Aktionen werden hier als UTC Time abgelegt. Also AktionsZeit +2 = Ausführungszeit auf dem lokalen Rechner.

Gruß

Enno

Link zu diesem Kommentar
Auf anderen Seiten teilen

*ans hirn batsch* oh wei oh wei, wo bin ich nur mit meinen gedanken...

is klar, zeit_aktion+2 > zeit_jetzt = wahr, ergibt voll und ganz sinn...

Das verhalten kann unterschiedliche gründe haben.

- es ist softwaretechnisch implementiert das die Zeitzonen erkannt und aufeinander abgestimmt werden

- es ist systemtechnisch das beim berechnen von timestamps so oder so, alle timestamps immer in der gleichen zeitzone sind (unix sekunden seit blub greenwichtime) und lediglich die ausgabe durch die zeitzone geändert wird.

vermute ich

vllt. hast du aber auch nur ein paar kleine gizmos in deinem rechner die die bits und byts auf den platinen einfangen und zu ihrem heimatplaneten zorg schicken und dafür irgendwelche flaschen infos in die leitungen pflanzen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Daran denke ich auch die ganze Zeit!

Aber warum werden dann in folgendem Code...

declare

ts1 TIMESTAMP := SYSTIMESTAMP;

ts2 TIMESTAMP WITH TIME ZONE:= SYSTIMESTAMP;

ts3 TIMESTAMP WITH LOCAL TIME ZONE:= SYSTIMESTAMP;

begin

dbms_output.put_line(ts3-ts1);

dbms_output.put_line(ts3-ts2);

dbms_output.put_line(ts2-ts1);

end;

die Zeitzonen gar nicht beachtet? Guckst Du hier:

+000000000 00:00:00.000213000

+000000000 00:00:00.000046000

+000000000 00:00:00.000167000

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...