May 17, 2016 08:32 AM|Junfeng Dai|LINK
so if you subtract 48.017 from the 51.290 you get 3.273 not the 3.260 as save in the database
According to your description, as far as I know that SQL Server datetime has a precision of 1/300 of a second.
If you need that millisecond accuracy, there's no pleasant way around it, but you could store the value in custom number fields and rebuild it every time you fetch the value, or to store it as a string of a known format. You can then (optionally) store an
'approximate' date in the native date type for the sake of speed, but it introduces a conceptual complexity that often isn't wanted.
For more information, click
here to refer about Why is SQL Server losing a millisecond?