Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

TIMESTAMP vergleich

Empfohlene Antworten

Veröffentlicht

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

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

@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

*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 ;)

  • Autor

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.