SQL Server 2008 y milisegundos

En SQL Server 2008, ¿por qué las siguientes consultas devuelven el mismo valor?

-- These all return 2011-01-01 23:59:59.997
SELECT CAST('2011-01-01 23:59:59.997' as datetime)
SELECT CAST('2011-01-01 23:59:59.998' as datetime)

¿Y por qué la siguiente consulta se redondea al día siguiente?

-- Returns 2011-01-02 00:00:00.000
SELECT CAST('2011-01-01 23:59:59.999' as datetime)

Respuestas a la pregunta(2)

Su respuesta a la pregunta