Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Diferença entre conversões de data e hora no MSExcel e SQL Server


Concentrando-se especificamente em DATETIME, onde as conversões de int são permitidas, há duas razões para a discrepância.

  1. 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.

  2. 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: