Mein Code gibt TOTAL HOURS in Stunden an, aber ich versuche etwas wie
auszugeben %Vor%Dabei steht 8 für den Stundenanteil und 36 für den Minutenanteil. Insgesamt hat eine Person an einem einzigen Tag im Büro gearbeitet.
%Vor%Ich würde Ihre endgültige Wahl als:
treffen %Vor% Jede Lösung, die versucht, DATEDIFF(hour,...
zu verwenden, ist kompliziert (wenn es korrekt ist), weil DATEDIFF
Übergänge zählt - DATEDIFF(hour,...09:59',...10:01')
gibt 1 wegen des Übergangs der Stunde von 9 auf 10 zurück. Also bin ich Verwenden Sie einfach DATEDIFF
in Minuten.
Obiges kann immer noch subtil falsch sein, wenn Sekunden beteiligt sind (es kann etwas überzählig sein, weil es winzige Übergänge zählt). Wenn Sie also eine zweite oder eine Millisekunden-Genauigkeit benötigen, müssen Sie DATEDIFF
anpassen, um diese Einheiten zu verwenden Konstanten (wie die Stunden eine oben), um nur Stunden und Minuten zurückzugeben.
Ändern Sie einfach das
%Vor%Teil zu
%Vor%Das / 60 gibt Ihnen Stunden, das% 60 gibt Ihnen die verbleibenden Minuten und mit CONCAT können Sie einen Doppelpunkt dazwischen setzen.
Ich weiß, dass es eine alte Frage ist, aber ich bin darauf gestoßen und dachte, es könnte helfen, wenn jemand anders darauf stößt.
Bitte geben Sie den zugehörigen Wert an und versuchen Sie Folgendes:
%Vor%Da jede DateTime in einen Float umgewandelt werden kann und der Dezimalteil der Zahl die Zeit selbst darstellt:
%Vor%Dies ergibt eine Datumszeit wie '1900-01-01 Stunde des Tages', die Sie als Zeit, Zeitmarke oder sogar Convert umwandeln können, um die formatierte Zeit zu erhalten.
Ich denke, das funktioniert in jeder Version von SQL, da das Konvertieren von Datetime zu Float seit Version 2005 kompatibel ist.
Ich hoffe, es hilft.
Teilen Sie die Datediff
in MS durch die Anzahl der ms in einem Tag, die in Datetime
und dann in die Uhrzeit umgewandelt wird:
Tags und Links sql sql-server