Gehört zwar nicht wirklich in das Thema Hotline, aber heute hab ich ganz schön Hirnschmalz benötigt und konnte mich immer ein Stück mehr dem Ergebnis nähern.
Es ging drum eine Auswertung über eine Zeiterfassung zu generieren, in dem die Daten leider nicht in die Tiefe geschrieben wurden, sondern flach, was einige Probleme mit sich bringt, wenn man die Zeiten auswerten will. In der Praxis hieß das. Pro Datensatz erhielt man 6 Start- und Endtermine und das über mehrere Datensätze verteilt ergibt die Tätigkeit an einem Tag. Damit es auch ja nicht zu einfach wird, waren die Zeiten nicht geordnet und syncron je Datensatz vorhanden, sondern quer verteilt über die Datensätze, denn man arbeitet ja nicht nonstop immer an der gleichen Sache, sondern wird auch mal von anderen Dingen unterbrochen.
D.h. erstmal wurden die 6 Datensätze in eine tiefe Struktur gebracht, so dass es je Datensatz je sechs Start- und Endzeiten gab. Als nächstes gab es das Problem, dass der Zeitanteil des Datenbankfeldes bei der Datenübergabe an unser List & Label leider genullt werden, d.h. ich im SQL schon dafür sorgen musste, dass der Zeitanteil extra als String übergeben wird. Nach mehreren erfolgreichen Versuchen und ein paar Bemühungen in google, konnte ich den Befehl im SQL auf dieses hier reduzieren:
- SELECT CONVERT(varchar(5), crm_zeit01, 108) AS STARTZEIT FROM …
Dies liefert mir den Zeitanteil im Feld crm_zeit01 in Form eines Strings STARTZEIT. das gleiche hab ich natürlich für die Endzeit gemacht. Zur weiteren Auswertung wollte ich aber auch noch die Zeitdifferenz zwischen Start- und Endzeit ausgeben und zwar nicht in der Form 0:35, weil das wäre ja relativ einfach mit obigem Befehl nur statt crm_zeit01 würde hier die Differenz aus crm_zeit02-crm_zeit01 genommen, sondern umgerechnet in Industrieminuten. Per Hand ( min * 10 / 6) oder In Excel relativ einfach umzurechnen, ist dies in SQL erstmal nicht so einfach gewesen, bis ich auf den SQL Befehl DATEDIFF gestoßen bin. Über diesen ist mir dies schlußendlich sehr einfach gelungen *Freu*
- SELECT DATEDIFF(minute, crm_zeit01, crm_zeit02)*10/6 AS IMIN FROM …
Als nächstes könnte man diese Werte in Diagramme als Zeitstrahl ausgeben, aber ich glaub für heute war das genug Hirnschmalz und ich will lieber gar nicht wissen was der Sybase Server mit diesen Befehlen anstellt
Ich hab ja versprochen, dass ich was dazu schreibe. Aber ich verstehe es nicht!!!
So, erfüllt!
juhuuuu