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


Lieber Michael,

nachdem du ja PostgreSQL verwendest, habe ich in der dortigen Doku nachgesehen, da gibt es die Funktion TIMEDIFF nicht; 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. 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.
Ich stelle noch ein weiteres Phänomen fest (zumindest in Verbindung mit MariaDB): Ich hatte den ersten Versuch direkt mit der Datenbank gemacht, da kam dann schön eine Zeitangabe (04:58:01) heraus. Nach genauem Lesen deiner ersten Mail habe ich dann gefunden, dass du das in einer Abfrage verwenden willst, und das dort ausprobiert.

 * Bei der Verwendung von TIMEDIFF erhalte ich bei meinem Beispiel
   0,21, das ist die genannte Zeit als Bruchzeit eines Tages
   (gerundet). Da müsste man dann wohl irgendeine Umwandlung verwenden,
   aber da habe ich wenig Erfahrung, und ohnehin ist das nicht PostgreSQL.
 * Bei der Verwendung der Subtraktion ergibt sich 49801. Da habe ich
   ein bisschen gebraucht, bis ich kapiert habe, dass da die
   Zeitangaben einfach als Zahlen ohne die Doppelpunkte interpretiert
   werden und die Differenz dieser Zahlen gebildet wird: 181518 -
   131717 = 49801.

Das hilft dir nur bedingt, weil es eine andere DB-Engine ist. Aber vielleicht ist das Verhalten bei der Subtraktion bei PostgreSQL ebenso, weil das möglicherweise eine Base-Eigenheit ist, dann hast du schon einen Hinweis. 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. Es ist ja auch die Frage, ob du eine Abfrage in Base brauchst, eine View im DB-System ist normalerweise schneller (die sieht dann für Base wie eine Table aus, aber für die Datenbank verhält sie sich wie eine Abfrage), eine Abfrage brauchst du ja wohl nur, wenn du sie per Programm modifizieren willst, das ist bei einer View aufwe(ä)ndiger.

Herzliche Grüße

Gerhard

Am 13.08.2019 um 20:13 schrieb Hessler, Klaus-Michael:
Lieber Gerhard,

vielen Dank.
Außerdem verwendest du wohl, wie aus den Parametern anzunehmen ist, die DATEDIFF-Funktion von Basic (es gibt eine gleichnamige z.B. bei MariaDB), aber du dich ja im SQL befindest, musst du eine Funktion nehmen, die das Datenbanksystem bereitstellt.
Bei MariaDB und dann sicher auch bei MySQL wäre das TIMEDIFF
SELECT tim1, tim2, TIMEDIFF(tim1, tim2) FROM michael WHERE id = 1;
Das Ergebnis:
tim1                tim2               TIMEDIFF(tim1, tim2)
18:15:18        13:17:17        04:58:01

Hier leider nicht:
SELECT
"ID-dz",
"Datum", "Beginn", "Ende",
( SELECT "Ende" - "Beginn" FROM "SandBox"."DatZeit" ) "dauer",
"Ende" - "Beginn" "aa",
TIMEDIFF( "Ende", "Beginn" ) "ww" FROM "SandBox"."DatZeit" "DatZeit";
liefert
ERROR: function timediff(time without time zone) does not exist

Ohne die TIMEDIFF-Spalte lautet das Ergebnis:
1   13.09.2018   11:00   12:15   <OBJECT>   <OBJECT>

Herzliche Grüße
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.