Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

neue Erkenntnisse über Range-Type/s (interval)

Dieses Thema im Forum "PostgreSQL" wurde erstellt von Kampfgummibaerlie, 20 Mai 2017.

  1. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Anbei auch danke an Akretschmar, der hat mir viel (bisherige) Freude ermöglicht, und mir auch den Interval schonmal vorgeschlagen, aber ja, ich lerne lieber durchs Scheitern, als durchs zuhören ;)

    Aber ja, man lernt ja bekanntlich nie aus :D

    Nach jede Menge arbeiten am Ganzen, und nachdem das Programm (PGAdmin) zwischendurch mal meinte "Typ ist interval", habe ich das Ganze einfach mal probiert, und siehe da, es gibt sogar die Werte in Tagen, bzw die Dauer in HH:MM:SS zurück.

    Und, er ist auch in der Lage, dass ganze zu "kombinieren", sprich er gbt wieder, "1 day 01:00:00", oder ähnliches.

    Ich schau mal nach, seit wann ich mit PostgreSQL umgehe, und wie "viel/wenig" ich eigentlich schon kann, und frage mich, wielange ich noch so "motiviert" bin, weiteres von PostgreSQL zu lernen.

    Ich denke, tatsache ist nunmal, dass ich wegen ein jedem "Pups", wie es jemand so schön sagte, nachfrage, oder übern Tag selbst draufkomme, und dann am Abend mein neues Wissen in diesem Forum poste ;)

    Also, meine heutige Erkenntniss (zum probieren):


    eine Unterfunktion, auf die die der Type zugreifen kann
    Code:
    CREATE FUNCTION timestamp_subtype_diff(x timestamp, y timestamp) RETURNS float8 AS 'SELECT EXTRACT(EPOCH FROM (x - y))' LANGUAGE sql STRICT IMMUTABLE;
    

    Einen Type, welcher als Range (2 Variable Werte (wie von und bis) ) in einer einzelnen Spalte/Zeile
    Code:
    CREATE TYPE timestamprange AS range (subtype = timestamp, subtype_diff = timestamp_subtype_diff);
    

    Um eine Function für die Differenz zwischen den 2 Werten in der Timestamprange zu erstellen:
    Code:
    create function timestamprange_diff(x timestamprange) RETURNS interval as 'Select (upper(x)-lower(x))' Language sql strict immutable;
    

    Um das Ganze einmal abzuprüfen: ( Werte, wo über 1 vollen Tag rauskommt)
    Code:
    select timestamprange_diff('(1.1.17 08:00, 2.1.17 08:30)')
    
    Resultat sollte 1 day 00:30:00 sein, wenn ihr "meine" Codes verwendet ;)

    Anbei hoffe ich, es ist nicht verboten, das gute alte "Willkommen" von Walter zu veröffentlichen xD

    Diese Nachricht habe ich am 7.3.2017 bekommen, sprich es ist keine 3 Monate her, und ich fühle mich hier, so wie auch im privaten Leben deutlich wohler, weil ich wieder halbwegs etwas vor habe, denke ich ;)

    Share-Link gefunden, jedoch kann ich auf diesem Weg nur vereinzelte Threads sharen.
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Falls Du mich meinst: falsch geschrieben. Egal. Danke.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden