Date: prev next · Thread: first prev next last
2019 Archives by date, by thread · List index


Hallo zusammen,

ich antworte zusammenfassend auf beide Nachrichten (vielen Dank dafür!), da es sich teils überschneidet:
Backend: PostgreSQL mit JDBC-Konnector.
Beide Zeitfelder sind Typ TIME, versuchsweise auch Typ TIMEtz (Fehler time zone s.u.). Ich brauche die Dauer = Ende - Beginn (ohne Datum, da immer nur am gleichen Tag, kein Überschreiten der Mitternacht) in einem Bericht. Auch darin kann ich die Berechnung nicht ohne Fehlermeldung lösen. In dem (gruppierten) Bericht brauche ich dann auch noch die Summe der Dauern je Gruppe und die Gesamtsumme über Dauer.

Mach' doch einmal ein Beispiel, bei dem das auch nachvollziehbar ist. Handelt es sich um die Zeiten 11:00 Uhr und 12:15 Uhr? Soll also 01:15 oder 75 raus kommen, korrekt?
Ja, 01:15 wäre ideal! Oder auch 0,05208333 = 01/24 + 15/24/60 bzw. für Gerhards Zeitangabe (04:58:01) 0,206956018519 = 04/24 + 58/24/60 + 01/24/60/60.

nachdem du ja PostgreSQL verwendest, habe ich in der dortigen Doku nachgesehen, da gibt es die Funktion TIMEDIFF nicht;
Stimmt, ich hatte es trotzdem ausprobiert ...

soweit ich das verstehe, wird das Minuszeichen verwendet, die Beispiele sind leider durchgängig nur mit Konstanten ausgeführt. Daraufhin habe ich die Subtraktion von TIME-Feldern mal in MariaDB ausprobiert, das geht auch, liefert aber ein zumindest gewöhnungsbedürftiges Ergebnis, s.u. Versuche auf jeden Fall mal, was direkt mit der Datenbank funktioniert, du hast ja ein Tool für den Zugriff auf PostgreSQL, dessen Namen ich gerade nicht auswendig weiß (aber er steht irgendwo!),  und probiere dann erst in Base.
Das Minuszeichen liefert mit einer Dbeaver-Abfrage mit den Feldtypen TIME das korrekte Ergebnis 01:15. Diese Abfrage in BASE gibt <OBJECT>. Das Minuszeichen in einer Dbeaver-Abfrage mit den Feldtypen TIMETZ ergibt den
SQL-Fehler [42883]: ERROR: operator does not exis ...

Ich vermute, dass dein Problem mit dem in deiner Antwort unten genannten Beispiel darin besteht, dass du zusätzlich zu der Subtraktion auch noch TIMEDIFF drin hast, denn die Fehlermeldung bezieht sich ja darauf (du hättest erst einmal bei PostgreSQL schauen sollen, ob die Funktion dort auch existiert bzw. genauso heißt); der Teil davor scheint ja wohl nicht beanstandet zu werden, die Prüfung geht ja normalerweise von links nach rechts.
Lass mal die Zeile mit Timediff weg.
Erledigt! Komisch ist, dass mit den Funktionen DATEDIFF (auch mit DATUM + ENDE - DATUM - BEGINN) oder der Funktion AGE der Fehler ERROR 42883: function DATEDIFF / AGE (time without time zone) does not exist. You might ...

Ich habe dann noch versucht, die TIME-Strings zu zerlegen in der Art:
SELECT split_part("Beginn", ':', 2) as S2 FROM ...
auch hier:
SQL-Fehler [42883]: ERROR: function split_part(time without time zone, unknown, integer) does not exist   Hinweis: No function matches the given name and argument types. You might need to add explicit type casts.

Zusammengefasst:

 * Minus-Zeichen
     o OK in DBeaver mit Feldtyp TIME (nicht TIMETZ!),
     o <OBJECT>-Fehler in BASE.
 * DATEDIFF oder AGE oder SPLIT schon in DBeaver ERROR 42883 time zone.

Danke!
Michael


--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.