ericag3
Goto Top

Zeitdifferenz berechnen MSSQL

Hallo zusammen,

ich würde gerne die Produktionszeit je Tag errechnen und ausgeben:

Datum           Produktionszeit
2017-10-09   24 Minuten
2017-10-10   25 Minuten
...

Ich habe schon ein wenig mit datediff herumgespielt, komme aber nicht wirklich weiter.
Kann jmd weiterhelfen?

Vielen Dank.

Eric
studio

Content-ID: 352974

Url: https://administrator.de/contentid/352974

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

emeriks
emeriks 27.10.2017 um 08:21:13 Uhr
Goto Top
Hi,
diese Daten sind nicht schlüssig, um darüber etwas sagen zu können.
Was "Datum" und "Zeit" sein sollen, kann man erahnen. Was aber "Datum_Zeit" sein soll, nicht. Und was ist "Schichtzähler"?
Kann es sein, dass "Datum_Zeit" das "Von" ist und die Combi aus "Datum" und "Zeit" das "Bis". Sonst würde es keinen Sinn ergeben. Obwohl Sinn sowie infrage zu stellen ist. Diese Daten sehen nach Schrott aus.

E.
it-frosch
it-frosch 27.10.2017 aktualisiert um 09:03:08 Uhr
Goto Top
Hallo Eric,

ich verstehe deine Tabelle so.
Pro Tag hast du bis zu 4 Schichten, die jeweils von Datum_Zeit bis Zeit arbeiten.
Worüber du stolperst ist, dass irgendeine Intelligenzbestie in der Spalte Zeit das Datum leer gelassen hat.
Wenn du die '1754-01-01' mit dem Datum aus Datum_Zeit ersetzt, wird dein Datediff auch sauber funktionieren.

Du könntest auch mit CAST die Werte aus den Spalten Zeit und Datum_Zeit vom Datum befreien und dann
die Berechnung durchführen

Hoffe, das hilft dir weiter.

grüße vom it-frosch
em-pie
em-pie 27.10.2017 um 09:03:03 Uhr
Goto Top
Moin,

den Sinn beider Tabellen kann ich - ähnlich wie emeriks - leider nicht verstehen.

Zum Screenshot:
ich nehme mal an, die SPalte "Datum" ist vom Typ timestamp und beinhaltet nur ein Datum.
Die Spalte Zeit ist ebenfalls vom Typ timestamp, beinhaltet aber nur Zeiten (daher auch immer der 1.1.1754).
BEide SPalten ergeben addiert die Produktionsstartzeit!?
Die Spalte Datum_Zeit ist ebenfalls wieder vom Typ timestamp, aber quasi die Endzeit der Produktion!?.
Das Feld Schicht ist dann die SchichtNr. des jeweiligen Tages.

Liege ich hier richtig?

Was in deinem Fall funktionieren könnte (ungetestet):
Select 
 cast(Datum as date) as ShiftDate
, Schicht
, SUM(DateDIFF(minute, cast(Datum as datetime) + cast(Zeit as datetime), Datum_Zeit)) as ProdTime
From
 YourTable
Group BY
cast(Datum as date), Schicht

Jedenfalls wäre das ein ANsatz, den du mal weiter verfolgen könntest, speziell mit den Suchen:
https://www.google.de/search?q=MS+SQL+Date+and+time+to+datetime
https://www.google.de/search?MS+SQL+datetime+addieren

Gruß
em-pie