Laden...

C# SQL Express - Anfängerfrage

Erstellt von blenderman vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.320 Views
B
blenderman Themenstarter:in
11 Beiträge seit 2006
vor 17 Jahren
C# SQL Express - Anfängerfrage

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

3.170 Beiträge seit 2006
vor 17 Jahren

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

B
blenderman Themenstarter:in
11 Beiträge seit 2006
vor 17 Jahren

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

3.170 Beiträge seit 2006
vor 17 Jahren

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

B
blenderman Themenstarter:in
11 Beiträge seit 2006
vor 17 Jahren

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

B
blenderman Themenstarter:in
11 Beiträge seit 2006
vor 17 Jahren

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

3.170 Beiträge seit 2006
vor 17 Jahren

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