Ja, SQL Server
rondt de tijd af op 3.(3)
milliseconden:
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
Zoals je kunt zien, zijn deze DATETIME
's verschillen 1
ten tweede, en hun binaire representaties verschillen met 0x12C
, dat is 300
in decimalen.
Dit komt omdat SQL Server
slaat de time
op onderdeel van de DATETIME
als een getal van 1/300
seconde tikt vanaf middernacht.
Als u meer precisie wilt, moet u een TIME
. opslaan deel als een afzonderlijke waarde. Zoals, bewaar de tijd afgerond op een seconde als een DATETIME
, en milliseconden of welke precisie je ook nodig hebt als een INTEGER
in andere kolommen.
Hiermee kunt u complexe DATETIME
. gebruiken rekenkunde, zoals het toevoegen van maanden of het vinden van weekdagen op DATETIME
's, en je kunt gewoon de milliseconden optellen of aftrekken en het resultaat samenvoegen als .XXXXXX+HH:MM
om geldige XML
te krijgen vertegenwoordiging.