Eh bien, MS Access représente son datetime type de données en tant que double
:
- L'époque
(point zéro) du calendrier MS est
30 December 1899 00:00:00 - La partie entière du
doubleest le décalage en jours par rapport à l'époque, et - La partie fractionnaire du
doubleest la partie fractionnaire de la journée.
Selon la spécification, le domaine de la partie date d'un MS Access datetime est
- limite inférieure :
1 January 100 - limite supérieure :
31 December 9999
Et puisque le domaine d'un SQL Server datetime est :
- limite inférieure :
1 January 1753 - limite supérieure :
31 December 9999
toutes les dates de votre base de données MS Access antérieures au 1er janvier 1753 causeront des problèmes. Vous devez trouver les fausses données et les corriger. Quelques approches :
-
Dans votre base de données d'accès, créez une vue/requête pour présenter les données sous une forme acceptable pour SQL Server. Ensuite, chargez en masse à partir de cela dans SQL Server.
-
Souvent, comme il est à peu près acquis que vos données source sont sales/corrompues, lors du chargement en bloc de données dans SQL Server, on charge en masse les données source dans une table de travail où toutes les colonnes sont nullables, de type
varchartypes et qui n'a pas de contraintes/clés. Une fois cela fait, exécutez une procédure stockée qui effectue le nettoyage et le massage nécessaires des données avant de les déplacer vers leur emplacement d'origine.