❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Zeiterfassung - Uhrzeiten addieren und subtrahieren

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Moerser01
Beiträge: 28
Registriert: Mo 3. Okt 2016, 18:01

Zeiterfassung - Uhrzeiten addieren und subtrahieren

Beitrag von Moerser01 » Di 18. Okt 2016, 12:36

Hallo ,
ich bin Datenbankneuling und will wieder alles auf einmal. Nach tagelangen suchen im Netz muß ich doch die hilfe vom Forum in Anspruch nehmen:

Zeiterfassung:
Ich habe eine Tabelle erstellt mit

Datum - Von - Bis - PauseVon - PauseBis - DienstArt - ma_ID
1 17.10.16 8:00 16:50 9:50 10:00 D 1

Jetzt habe ich eine Abfrage erstellt in dem ich die Arbeitzeit ausrechnen kann ,also Bis minus Von in ArbeitGesamt

Code: Alles auswählen

SELECT CONCAT( CONCAT( DATEDIFF( 'hour', "Von", "Bis" ), ':' ), ( DATEDIFF( 'minute', "Von", "Bis" ) - ( DATEDIFF( 'hour', "Von", "Bis" ) * 60 ) ) ) AS "ArbeitGesamt", "Datum", "Von", "Bis", "PauseVon", "PauseBis", "DienstArt", "ma_ID" FROM "Gesamtdaten"


soweit ganz gut.
Das gleich habe ich mit PauseVon und PauseBis gemacht.
Glappt auch ganz gut aber jetzt wird schwierig.
Ich wollte gern beide Abfragen in eine vereinigen, also
Summe = (Bis-Von) - (PausBis-PauseVon)

und als Steigerung

Summe = (Bis-Von) - (PausBis-PauseVon) -50 min

Also das ich alles in einer Abfrage habe . Ist der Ansatz zu einfach gedacht( muß ich mit Tabellenbziehung arbeiten) oder ist das machbar?

Über Anregungen währe ich sehr dankbar?

thx Moerser01

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Zeiterfassung - Uhrzeiten addieren und subtrahieren

Beitrag von RobertG » Di 18. Okt 2016, 17:30

Hallo Moerser01,

nicht tagelang im Netz suchen, sondern einfach das Handbuch runter laden: http://de.libreoffice.org/get-help/documentation/. Hier etwas nach unten scrollen. Da findest Du zum einen das ganze Handbuch für Base und auch die einzelnen Kapitel. Was Du brauchen kannst steht im Kapitel "Abfragen" ganz zum Schluss: "Rechenfehler in Abfragen".

Deine Abfrage ist da leider nicht ganz zielführend: Mit Hilfe von CONCAT machst Du aus Zahlen einen zusammengesetzten String, der dem Anschein nach ganz gut aussieht, aber weder zum weiteren Berechnen taugt noch Deine eigenen Kriterien erfüllt. Ich habe bereits bei einem Arbeitsbeginn von 7:50 Uhr und einem Ende von 18:10 Uhr ein Ergebnis von 11:-40 für "ArbeitGesamt".

Einfacher ist es, die Differenz gleich in Minuten angeben dann in Teile eine Tages umwandeln und das Ganze formatiert als Zeit anzeigen zu lassen. Das sieht dann so aus:

Code: Alles auswählen

SELECT "ID", DATEDIFF( 'minute', "Von", "Bis" )/1440.00000 AS "ArbeitGesamt", "Datum", "Von", "Bis", "PauseVon", "PauseBis" FROM "Gesamtdaten"
Wenn Du jetzt noch Deine Berechnungen unterbringen willst, erhältst Du diesen Code:

Code: Alles auswählen

SELECT "ID", DATEDIFF( 'minute', "Von", "Bis" )/1440.00000 AS "ArbeitGesamt", DATEDIFF( 'minute', "PauseVon", "PauseBis" )/1440.00000 AS "Pause", DATEDIFF( 'minute', "Von", "Bis" )/1440.00000 - DATEDIFF( 'minute', "PauseVon", "PauseBis" )/1440.00000 AS "Arbeit-Pause", DATEDIFF( 'minute', "Von", "Bis" )/1440.00000 - DATEDIFF( 'minute', "PauseVon", "PauseBis" )/1440.00000 - 50/1440.00000 AS "Arbeit-Pause-50", "Datum", "Von", "Bis", "PauseVon", "PauseBis" FROM "Gesamtdaten"
Da Base für Abfragen die Formatierung nicht speichert erhältst Du allerdings die saubere Ansicht nur, wenn Du ein Formular erstellst und in diesem die Felder für die Zeit entsprechend formatierst.

Bedenke, dass Zeitberechnungen in diesem Fall immer etwas mit Rundungen zu tun haben können. Deswegen habe ich hier in der Berechnung auch eine Zahl mit 5 Nachkommastellen erzeugt, um die entsprechende Genauigkeit herzustellen.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Moerser01
Beiträge: 28
Registriert: Mo 3. Okt 2016, 18:01

Re: Zeiterfassung - Uhrzeiten addieren und subtrahieren

Beitrag von Moerser01 » Di 18. Okt 2016, 17:59

Dankeschön für die schnelle Antwort. Ich probiere es heute Abend gleich mal aus. Ich glaub ich verstehe den Aufbau des Codes auch soweit. Aber kannst du mir noch erklären was es mit der 1440 auf sich hat? Die Nullen nach der Kommmastelle, nehme ich an, ist wie viele Stellen nach dem Komma angezeigt werden und mit ihnen gerechnet wird?
Wenn ich so was öfter machen will muss ich wohl programmieren lernen oder gibs Internetseiten wo man verständlich solche Sachen erklärt bekommt?
Habe Tage lang gesucht und keine passende Antwort gefunden.
Danke

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Zeiterfassung - Uhrzeiten addieren und subtrahieren

Beitrag von RobertG » Di 18. Okt 2016, 18:23

Hallo Moerser01,

Ursprung für die 1440: Die Formatierungsfunktion für Zeiten bei LO geht von Tagen als 1 Ganzes aus.
1 Tag hat 24 Stunden. 1 Stunde also 1/24 Tag.
1 Stunde hat 60 Minuten. 1 Minute also 1/60 Stunde oder 1/(24*60) Tag.
... und 24*60 sind eben diese 1440, also 1440 Minuten passen in einen Tag.

Wenn Du bei Abfragen mit Datenbanken eine Ganzzahl durch eine andere Ganzzahl teilst, so wird das Ergebnis wieder eine Ganzzahl sein. Trage einfach einmal für ein Feld in einer Abfrage 2/3 ein. Das Ergebnis ist 0. 3 passt nicht ganz in 2 rein, also eben überhaupt nicht. Das ist wie das Rechnen auf niedrigem Grundschulniveau: Da schreibt diese dusselige Programm nicht einmal irgendwo einen Rest auf. Auch wenn Du Dir noch so viele Nachkommastellen anzeigen lässt - es bleibt 0. Wenn Du jetzt 2/3.0 aufschreibst, dann teilst Du eine Ganzzahl durch eine Zahl mit einer Nachkommastelle. Das Ergebnis wird jetzt mit einer Nachkommastelle ausgegeben. 2/3.0 wird als 0,7 ausgegeben. Je weiter Du das Ganze mit Nachkommastellen versiehst, desto genauer wird die berechnete Zahl. Deswegen hier also .../1440.00000 - allein um der Genauigkeit willen. Für so etwas gibt es natürlich auch Funktionen, statt eben einfach Nullen als Nachkommastellen anzuhängen, CONVERT z.B. Aber das ist umständlicher.

Ich würde an Deiner Stelle einfach das Handbuch runter laden und dort über den PDF-Viewer drin suchen. Die Zuordnung von Inhalten zu Kapiteln habe ich da manchmal nicht so eindeutig regeln können. Das Programmieren brauchst Du dazu nicht zu lernen. Davon habe ich auch nur sehr wenig Ahnung.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Moerser01
Beiträge: 28
Registriert: Mo 3. Okt 2016, 18:01

Re: Zeiterfassung - Uhrzeiten addieren und subtrahieren

Beitrag von Moerser01 » Di 18. Okt 2016, 19:41

Danke für die ausführliche Antwort. Jetzt verstehe ich den Aufbau auch. Habe mir das Handbuch runtergeladen. Ich hoffe das ich jetzt einige Probleme auch selber lösen kann.

MfG Moerser01


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten