SQL Server
almacena parte de tiempo como número de 1/300
Segundo largo ticks desde la medianoche.
23:59:59.999
se redondea al tick más cercano que resulta ser 00:00:00.000
del día siguiente.
SELECT CAST(CAST('2009-12-01 00:00:00.000' AS DATETIME) AS BINARY(8)),
CAST(CAST('2009-12-01 23:59:59.997' AS DATETIME) AS BINARY(8)),
CAST(CAST('2009-12-01 23:59:59.999' AS DATETIME) AS BINARY(8))
0x00009B8F 00000000 0x00009B8F 018B81FF 0x00009B90 00000000
En el primer valor, la parte de la fecha, 0x9B8F
(39823
) es el número de días desde el Jan 1st, 1900
, y la parte de tiempo, 0
, es el número de tics desde la medianoche.
En el segundo valor, 0x018B81FF
(25919999
, o 24 * 60 * 60 * 300 - 1
) es el número máximo posible de ticks desde la medianoche.
Finalmente, el tercer valor tiene el 0
en la parte de la hora y la parte de la fecha aumentada en uno.