Die anderen 4 Byte speichern die Tageszeit, die als Anzahl der Millisekunden seit Mitternacht dargestellt wird.
Dies kann man in der Januar 2004 Edition von BOL nachlesen.
Gibt man z.B. den Wert 300 in die zweiten 4-bytes eines Datetimes ein, erhält man als Ergebnis 1 Sekunden anstelle von 300 Millisekunden.
DECLARE @threehundred BINARY(8)
SET @threehundred = 0x00000000 + CAST(300 AS BINARY(4))
SELECT
@threehundred, CAST(@threehundred AS DATETIME)
------------------ ------------------------
0x000000000000012C 1900-01-01 00:00:01.000
(1 row(s) affected)
Wenn nun diese eine Sekunde bewirkt, dass ein Integerwert von 300 gespeichert wird, bedeutet dies im Umkehrschluss, dass nicht 300 Millisekunden gespeichert werden, sondern 300/300 einer Sekunde, also eine Sekunde. In diesem Zusammenhang ist auch noch dieser Beitrag interessant.
Danke an SQL Server MVP Steve Kass für diesen Tip.