Concentrando-se especificamente em DATETIME, onde as conversões de int são permitidas, há duas razões para a discrepância.
-
O Excel usa uma base de 1 para datas, o SQL Server usa 0, ou seja,01/01/1900
quando convertido para um número no excel é 1, porém, no SQL é 0:SELECT CAST(CAST('19000101' AS DATETIME) AS INT);
Vai dar 0.
-
Há um erro deliberado no Excel para permitir a portabilidade da Lotus onde o bug não foi deliberado*. O Excel considera 29 de fevereiro de 1900 uma data válida, mas 1900 não foi um ano bissexto. O SQL não tem esse problema, então isso significa que há um dia extra no calendário do Excel.
*(mais leituras sobre isso sugerem que pode ter sido deliberado ou considerado inconsequente)
ADENDO
Há um Item de suporte da Microsoft que diz: