Firebird 5.0 Spalte automatisch berechnen

the_green_hornet

Neuer Benutzer
Beiträge
4
Habe eine Firebird 5.0 Datenbank erstellt. Die Datenbank soll mit Lazarus (Free Pascal) verwendet werden.
Spalten ID, Datum, Bemerkung, Beginn, Ende, Pause, Arbeitszeit. Spalten Beginn, Ende, Pause und Arbeitszeit sind als TIME definiert.
Ich möchte die Spalte Arbeitszeit automatisch berechnen (Ende - Beginn - Pause) lassen.

In MariaDB klappt das ganze (UPDATE `Arbeitszeiten` SET `Arbeitszeit`= TIMEDIFF(TIMEDIFF(Ende, Beginn),Pause) WHERE 1).

Nur bei Firebird gibt des kein TIMEDIFF.

Ich suche eine Lösung nach möglichkeit ohne Trigger. Am liebsten im Programmcode. Dann kann ich bei einem anderen Datenbanksystem schnell den Code anpassen (z.B. mit IF-Abfrage).
 
Werbung:
Laut Handbuch geht datediff auch für Werte vom Datentyp TIME

Wobei TIME nicht der richtige Datentyp für "Pause" ist. Die Pause ist eine Zeitdauer, TIME stellt aber einen Zeitpunkt dar. Ich würde die Pause als INTEGER (=Minuten) definieren. Das gleiche gilt für "Arbeitszeit" - auch das ist eine Dauer, kein Zeitpunkt

Vermutlich würde ich die Arbeitszeit überhaupt nicht speichern, da sich ohne viel Overhead berechnen lässt.

 
Zurück
Oben