Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Différence entre les conversions datetime dans MSExcel et SQL Server

En se concentrant spécifiquement sur DATETIME, où les conversions depuis int sont autorisées, il y a deux raisons à l'écart.

  1. Excel utilise une base de 1 pour les dates, SQL Server utilise 0, c'est-à-dire 01/01/1900 lorsqu'il est converti en un nombre dans Excel est 1, cependant, en SQL c'est 0 :SELECT CAST(CAST('19000101' AS DATETIME) AS INT); Donnera 0.

  2. Il y a une erreur délibérée dans Excel pour autoriser la portabilité depuis Lotus là où le bogue n'était pas délibéré*. Excel considère le 29 février 1900 comme une date valide, mais 1900 n'était pas une année bissextile. SQL n'a pas ce problème, cela signifie donc qu'il y a un jour supplémentaire dans le calendrier Excel.

*(une lecture plus approfondie à ce sujet suggère que cela aurait pu être délibéré ou considéré comme sans conséquence)

ADDENDA

Il existe un élément d'assistance Microsoft qui indique :