Hallo,
ich plage mich zur Zeit einwenig mit der Zeit rum. Das ist der Stand der Dinge:
Die Datenbank speichert die Zeit in der Zone UTC ab
Jetzt will ich eine Funktion schreiben, die der DB sagen, dass die folgende Zeit (v_dateinput) in einer anderen Zeitzone(v_timezone) liegt und diese in die Zeitzone UTC umrechnen soll.
declare
tzrval VARCHAR(20);
v_dateinput ALIAS FOR $1;
v_timezone ALIAS FOR $2;
time1 TIMESTAMP with time zone;
time2 TIMESTAMP with time zone;
text1 text;
begin
[..]
-- ++ Zeit in Text umwandeln ++
Select to_char(v_dateinput, 'DD Mon YYYY HH12:MI:SS') INTO text1 ;
-- ++ dem Text die Zeitzone '+01' hinzufügen. ++
text1 := text1 || '+01';
-- ++ Text in Zeit umwandeln ++
Select to_TIMESTAMP( text1, 'DD Mon YYYY HH12:MI:SS') into time1;
-- ++ Timestamp with time zone in die UTC Zeitzone umwandeln. ++
Select timezone(v_timezone, time1) INTO time2 ;
-- ++ Zeitausgabe formatieren: HH12. ++
text1 := to_char(time2, 'DD Mon YYYY HH12:MI:SS');
-- ++ In Type Timestamp umwandeln. ++
RETURN to_TIMESTAMP( text1, 'DD Mon YYYY HH12:MI:SS') ;
end;
Diese Stelle funktioniert aber leider nicht:
-- ++ dem Text die Zeitzone '+01' hinzufügen. ++
text1 := text1 || '+01';
-- ++ Text in Zeit umwandeln ++
Select to_timestamp( text1, 'DD Mon YYYY HH12:MI:SS') into time1;
Obwohl ich im String die Zeitzone angebe, übernimmt er sie nicht bei der Funktion to_timestamp.
Könnt ihr mir helfen, wie ich das anderes machen kann?
liebe grüße
Lara