Ja, SQL Server runder tiden til 3.(3) millisekunder:
SELECT CAST(CAST('2009-01-01 00:00:00.000' AS DATETIME) AS BINARY(8))
SELECT CAST(CAST('2009-01-01 00:00:01.000' AS DATETIME) AS BINARY(8))
0x00009B8400000000
0x00009B840000012C
Som du kan se, er disse DATETIME 's adskiller sig med 1 sekund, og deres binære repræsentationer adskiller sig med 0x12C , det vil sige 300 i decimal.
Dette er fordi SQL Server gemmer time del af DATETIME som et tal på 1/300 andet kryds fra midnat.
Hvis du ønsker mere præcision, skal du gemme en TIME del som en separat værdi. Gem tid afrundet til et sekund som en DATETIME , og millisekunder eller hvilken præcision du har brug for som INTEGER i en anden kolonne.
Dette vil lade dig bruge kompleks DATETIME aritmetik, som f.eks. at tilføje måneder eller finde ugedage på DATETIME 's, og du kan bare tilføje eller trække millisekunderne og sammenkæde resultatet som .XXXXXX+HH:MM for at få gyldig XML repræsentation.