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

Differenz zweier Datetime-Felder in Stunden bei Sommer-/Winterzeit

Dieses Thema im Forum "Oracle" wurde erstellt von woltho, 6 November 2013.

  1. woltho

    woltho Neuer Benutzer

    Hallo

    Ich bin schon seit gestern auf der Suche und habe noch keine Lösung für mein Problem gefunden.

    Und zwar habe ich 2 Datetime Felder von denen ich die Differenz ermittle. Das funktioniert soweit auch ganz gut mit:

    select (Datetime2 - Datetime1)*24 as diff from table

    Wenn jetzt zwischen den beiden Daten aber die Sommer- bzw- Winterzeitumstellung ist, bekomme ich einen falschen Wert zurück.

    So z.b. ergibt (27-10-2013 06:00:00 - 26-10-2013 22:0:00) *24 = 8 Stunden.

    Richtig wären aber 9 Stunden. Ich bin kein Oracleprofi und hoffe daher auf eure Hilfe.


    Gruß Thomas
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Wenn Du die Information über die zeitzone in den Skat drückst ist das normal. Mit Zeitzone geht es korrekt:

    Code:
    test=*> select  '27-10-2013 06:00:00'::timestamptz - '26-10-2013 22:0:00'::timestamptz;
     ?column?
    ----------
     09:00:00
    (1 row)
    
    ich nutze PostgreSQL, sollte aber in Oraggle ähnlich/gleich funktionieren.
     
  3. woltho

    woltho Neuer Benutzer

    Super. Jetzt bin ich auf jeden Fall mal ein Stück weiter.

    Bekomme jetzt die richtige Differenz aber leider im falschen Format. Die Ausgabe sieht jetzt so aus:

    0 9:0:0.0

    Ich brauch das Ergebnis als Fließkommazahl. Hast du da noch nen Tip für mich?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Was brauchst Du? Die Anzahl der Sekunden?

    Code:
    test=*> select  extract(epoch from '27-10-2013 06:00:00'::timestamptz - '26-10-2013 22:0:00'::timestamptz);
     date_part
    -----------
      32400
    (1 row)
    
     
  5. woltho

    woltho Neuer Benutzer

    Ich brauch die Anzahl in Minuten. Leider gibt extract nur die Stunden oder Minuten zurück so das bei 8,5 Stunden entweder 8h oder 30 Minuten ausgegeben werden. Die Funktion epoch gibt es bei Oracle nicht.
     
  6. akretschmer

    akretschmer Datenbank-Guru


    Nun, eine Stunde hat üblicherweise ja 60 Minuten, also 8*60 + 30. Muß man halt sich ausrechnen. EPOCH gibt ja die Sekunden seit begin der Zeitrechnung zurück, ist hier halt praktisch. (die 9 Stunden werden als 9 Stunden nach 1.1.1970 interpretiert). Das ist möglicherweise eine der ( vielen praktischen) Erweiterungen von PG.
     
  7. woltho

    woltho Neuer Benutzer

    Ja, ohne rechnen komm ich hier nicht weiter. Ich extrahiere jetzt die Stunden und addiere die Minuten geteilt duch 60 hinzu und dann passt es. Schade das es keine elegantere Lösung von Oracle dafür gibt.
    Es gibt ja die Funktion months_between, warum dann nicht auch für Tage, Stunden usw.
    Aber egal. danke für deine Hilfe. So komm ich jedenfalls erstmal weiter.
     
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