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
double
est le décalage en jours par rapport à l'époque, et - La partie fractionnaire du
double
est 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
varchar
types 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.