Seite 1 von 1

Libreoffice Base Arbeitszeit berechnen

Verfasst: Sa 4. Jul 2020, 17:57
von Djano_2
Tabelle mit Beginn, Ende, Pause erstellt. Formatiewrt als Zeit hh:mm.ss.
Die Arbeitszeit errechnet sich aus Ende-Beginn-Pause. Alles muss vorher in Sekunden umgerechnet werden.
Die Umrechnung mache ich in einer Abfrage mir CAST( LEFT( "Ende", 2 ) AS INTEGER ) * 3600 + CAST( SUBSTRING ( "Ende", 4, 2 ) AS INTEGER ) * 60 + CAST( RIGHT( "Ende", 2 ) AS INTEGER ) jeweils für Beginn, Ende und Pause. Diese werden in als Alias EndeSekunden, BeginnSekunden und PauseSekunden angezeigt.

Mein Problem ist das ich die Berechnung Arbeitszeit = Ende-Beginn-Pause nicht hinbekomme. Was mache ich falsch?

Re: Libreoffice Base Arbeitszeit berechnen

Verfasst: Sa 4. Jul 2020, 18:53
von RobertG
Hallo Djano_2,

da ist bereits in der ersten Zeile Deines Posts eine Unklarheit: Du hast eine Tabelle, in der etwas als Zeit "formatiert" ist. Wenn dem der Feldtyp TIME zugrunde liegt, dann ist das keine Formatierung, sondern ein Inhalt, den Du über so etwas wie

Code: Alles auswählen

RIGHT( '0' || EXTRACT ( HOUR FROM "Ende" ), 2 )*3600 
+ RIGHT( '0' || EXTRACT ( MINUTE FROM "Ende" ), 2 )*60 ...
auslesen kannst. Das ist doch keine Texteingabe, die Du da verarbeitest, oder?

Es fehlt auch die Information, mit welcher der internen Datenbanken Du arbeitest. Der Code der HSQLDB unterscheidet sich besonders bei Zeit- und Datumsangaben sehr von dem in Firebird. In Firebird brauchst Du keine Umrechnungen zu tätigen. Da kannst Du die eine Zeit von der anderen direkt abziehen.

Gruß

Robert

Re: Libreoffice Base Arbeitszeit berechnen

Verfasst: Sa 4. Jul 2020, 23:19
von Wanderer
Djano_2 hat geschrieben:
Sa 4. Jul 2020, 17:57
...
Mein Problem ist das ich die Berechnung Arbeitszeit = Ende-Beginn-Pause nicht hinbekomme. Was mache ich falsch?
Der erste Fehler liegt in der Frage selbst:
Da Du nur die Vorarbeiten erklärst, aber nicht, was Du tatsächlich versucht hast um die Differenz zu bilden und welche Fehler es gibt, kann man nur raten? (Klingt als ob Du die Lösung einer Hausaufgabe suchst.)

Wie Robert schon annahm: Dein Code macht nur Sinn, wenn Deine Zeitangaben Texte sind, z.B. "08:30:00".
Wenn der Teil funktioniert, sollte

Code: Alles auswählen

EndeSekunden-AnfangSekunden-PauseSekunden AS ArbeitszeitSekunden
in einem SELECT
Dir die Sekundenzahl liefern, die Du dann nur noch wieder in HH:MM:SS umwandeln musst.

An welcher Stelle hakt es denn?

MFG, Jörn