Code: Alles auswählen.
CONVERT DATE sy-datlo
TIME sy-timlo
INTO TIME STAMP l_timestampl
TIME ZONE 'UTC'.
Code: Alles auswählen.
GET TIME STAMP FIELD l_timestampl.
Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
msfox
Nur warum muss dann "TIME ZONE 'UTC'" nach "INTO TIME STAMP" stehen. Damit würde es für mir zur Zielzeit gehören.PeterPaletti hat geschrieben: ↑13.02.2023 11:52dass der Zusatz TIME ZONE 'UTC' die Zeitzone der Quellzeit
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
msfox
Also habe ich beia-dead-trousers hat geschrieben: ↑13.02.2023 15:23Wenn man bei einer Zeitkonvertierung als TIMEZONE 'UTC' angibt werden DATE und TIME als Angaben aus der Zeitzone 'UTC' interprediert und somit ist zwischen dem Zeitstempel und Datum/Zeit kein Unterschied (außer einer allfälligen Sommerzeitabweichung) erkennbar.
Code: Alles auswählen.
CONVERT DATE sy-datlo
TIME sy-timlo
INTO TIME STAMP l_timestampl
TIME ZONE 'UTC'.
Code: Alles auswählen.
CONVERT TIME STAMP l_timestampl TIME ZONE 'UTC-1'
INTO DATE DATA(lv_udate) TIME DATA(lv_utime).
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
msfox
Das klappt aber nicht. Wenn ich die aktuell Uhrzeit (also meinen Timestamp aus der genannten Tabelle) in CET konvertiere, habe ich +1h.a-dead-trousers hat geschrieben: ↑13.02.2023 18:39Nimm 'CET', dann klappt es auch mit der Sommerzeit.
Code: Alles auswählen.
DATA: l_timestampl TYPE timestampl.
CONVERT DATE sy-datlo
TIME sy-timlo
INTO TIME STAMP l_timestampl
TIME ZONE 'UTC'.
CONVERT TIME STAMP l_timestampl TIME ZONE 'CET' "'UTC-1'
INTO DATE DATA(lv_udate) TIME DATA(lv_utime). "+1h.
Das war nur das Beispiel. In Wirklichkeit liegt der erste TIMESTAMP so auf der Datenbank. Das ist nicht änderbar, da ich nur die Daten verwende, aber selbst nicht Erzeuger bin.a-dead-trousers hat geschrieben: ↑14.02.2023 17:53Beim Umwandeln in den TIMESTAMP (das erste Convert) musst du auch CET nehmen.
Dann wird der Zeitstempel entweder falsch gebildet oder es ist gar kein echter TIMESTAMP (auch wenn vielleicht die Domäne verwendet wird).
Das macht in diesem Fall das CONVERT. D.h. obwohl dort UTC steht, ist meiner Meinung nach CET, da die aktuelle Uhrzeit im Zeitstempel steht.a-dead-trousers hat geschrieben: ↑14.02.2023 18:11Dann wird der Zeitstempel entweder falsch gebildet [...]dass einfach Datum und Uhrzeit concatenated werden
Code: Alles auswählen.
CONVERT TIME STAMP l_timestampl TIME ZONE 'UTC'
INTO DATE DATA(lv_udate) TIME DATA(lv_utime).
cl_abap_tstmp=>systemtstmp_syst2utc(
EXPORTING
syst_date = lv_udate
syst_time = lv_utime
IMPORTING
utc_tstmp = l_utc_tstmp ).
CONVERT TIME STAMP l_utc_tstmp TIME ZONE 'UTC'
INTO DATE lv_udate TIME lv_utime.