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.