Hallo Leute,
In meine Datenbank (SQL Express) sollen für ein kleines Zeiterfassungstool ZeilenID Datum Taskname Startuhrzeit Enduhrzeit und Zeit. Der Wert Zeit soll sich aus Enduhrzeit minus Startuhrzeit berechnen.
Meine Frage: Kann SQL diese Berechnung selber ausführen? Oder muss ich Änderungen der Datenbank überwachen und die Berechnung manuell ausführen?
Vielen Dank
Oli
Wenn Startuhrzeit und Enduhrzeit vom typ DateTime sind, dann kannst du's mit DATEDIFF probieren das gibts in SQL (Google für die Syntax)
--> Dann kannst du Dir evtl. die Datumsspalte sparen.
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Super Dankeschön,
muss sogar gar nicht das komplette Datum angeben. Datums einheit kann z.B. HH.mm (24Stunden mit Vornul und Mituten mit Vornul)
Gefundene Syntax:
DateDiff (<Datumseinheit>, <Start-Datum>, <End-Datum)
Jetzt muss ich nur noch rausfinden wos reinkommt 😉
lg
Oli
SELECT *, DATEDIFF(<Datumseinheit>,Startuhrzeit,Enduhrzeit) AS Zeit FROM DeinTabellenName
so ungefähr 🙂
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
danke! mein unwissen ist aber nicht die Syntax sondern: wohin mit der Syntax. Wie gesagt, ich bin ein Richtiger Neuling. Mach mich mal weiter auf die Suche und durstöber weiter mein VisualC#Express.
Lg
oli
So jetzt habe ich einen Platz für meine Syntax gefunden der so halbwegs funktioniert:
Dataset mit Designer bearbeiten -> TableAdapter -> Command Text ->
SQL Abfrage
SELECT TrackID, TrackDescription, Starttime, Stoptime, DATEDIFF(n, Starttime, Stoptime) AS Time
FROM TrackTable
SQL Abfrage Ende
Die Abfrage funktioniert und er rechnet mir die Minuten genau aus. Auch zur Laufzeit wird die Zeile Time automatisch mit den Berechneten Minuten gefüllt. Nur bei Änderungen und neuen Zeilen wird Zeile Time nicht geändert.
Bin ich überhaupt auf dem richtigen weg? Ist der Code falsch oder fehlt mal wieder die Hälfte?
Lg
Oli
P.s. HH.mm geht leider nicht - nur ganzzahlen - macht aber nix
Hallo,
ich denke du bist auf dem richtigen weg. Versuch mal nach jeder Änderung der Datenbank die Abfrage neu zu stellen, dann müsstest Du immer die aktuellen Daten erhalten. Vielleicht fehlt Dir aber auch nur noch ein DataTable.AcceptChanges().
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca