Kampfgummibaerlie
Datenbank-Guru
- Beiträge
- 743
LÖSUNG STEHT DARIN !
Ich würde gerne eine Function schreiben, welche allgemein einsetzbar ist, sprich, egal welche Range ich einsetzen würde (Typ Time_Range, Typ Date_Range oder Typ Timestamp_Range)
Also, mir ist klar, dass man dazu wiederum weitere 3 Funktionen schreiben muss, aber ich hätte gerne eine Basis-Funktion, welche für ein jede Range_Diff-Berechnung gleich bleibt.
Weil ich kämpfe damit, Upper(x) - lower(x) in eine Funktion zu bringen.
der Wert x ist ein Wert des Typs Range (welche auch immer), und irgendwie schaffe ich es nicht, eine doch so simple (?) Funktion zu schreiben.
Meine überlegung wäre, dass man einfach neue Range_Diff-Berechnungen anlegt, indem man eben diese eine Basis-Berechnung abfragt.
Falls das unmöglich/nicht sinnvoll/oder sonst etwas ist, aktzeptiere ich das gerne, aber selbst wenn das nicht umgesetzt werden würde, würde mich interessieren, wie man in einer Funktion mit upper und lower arbeiten könnte.
Nach kurzem herumdenken/probieren, draufgekommen, wies geht
create Function:
CREATE FUNCTION timestamp_subtype_diff(x timestamprange) RETURNS float8 AS 'SELECT EXTRACT(EPOCH FROM (upper(x)-lower(x)))' LANGUAGE sql STRICT IMMUTABLE;
test Function:
select timestamp_subtype_diff('1.1.17 08:00', '1.1.17 09:00')
Ergebniss:
-3600
Ich würde gerne eine Function schreiben, welche allgemein einsetzbar ist, sprich, egal welche Range ich einsetzen würde (Typ Time_Range, Typ Date_Range oder Typ Timestamp_Range)
Also, mir ist klar, dass man dazu wiederum weitere 3 Funktionen schreiben muss, aber ich hätte gerne eine Basis-Funktion, welche für ein jede Range_Diff-Berechnung gleich bleibt.
Weil ich kämpfe damit, Upper(x) - lower(x) in eine Funktion zu bringen.
der Wert x ist ein Wert des Typs Range (welche auch immer), und irgendwie schaffe ich es nicht, eine doch so simple (?) Funktion zu schreiben.
Meine überlegung wäre, dass man einfach neue Range_Diff-Berechnungen anlegt, indem man eben diese eine Basis-Berechnung abfragt.
Falls das unmöglich/nicht sinnvoll/oder sonst etwas ist, aktzeptiere ich das gerne, aber selbst wenn das nicht umgesetzt werden würde, würde mich interessieren, wie man in einer Funktion mit upper und lower arbeiten könnte.
Nach kurzem herumdenken/probieren, draufgekommen, wies geht
create Function:
CREATE FUNCTION timestamp_subtype_diff(x timestamprange) RETURNS float8 AS 'SELECT EXTRACT(EPOCH FROM (upper(x)-lower(x)))' LANGUAGE sql STRICT IMMUTABLE;
test Function:
select timestamp_subtype_diff('1.1.17 08:00', '1.1.17 09:00')
Ergebniss:
-3600