Bueno, MS Access representa su datetime
tipo de datos como double
:
- La época
(punto cero) del calendario MS es
30 December 1899 00:00:00
- La parte entera del
double
es el desfase en días desde la época, y - La parte fraccionaria del
double
es la parte fraccionaria del día.
Según la especificación, el dominio de la parte de la fecha de un MS Access datetime
es
- límite inferior:
1 January 100
- límite superior:
31 December 9999
Y dado que el dominio de un SQL Server datetime
es:
- límite inferior:
1 January 1753
- límite superior:
31 December 9999
cualquier fecha en su base de datos de MS Access anterior al 1 de enero de 1753 causará problemas. Necesita encontrar los datos falsos y corregirlos. Un par de enfoques:
-
En su base de datos de acceso, cree una vista/consulta para presentar los datos en una forma aceptable para SQL Server. Luego, cargue de forma masiva desde eso a SQL Server.
-
A menudo, dado que es prácticamente una conclusión inevitable que sus datos de origen están sucios/corrompidos, cuando se cargan datos de forma masiva en SQL Server, uno cargará de forma masiva los datos de origen en una tabla de trabajo donde todas las columnas son anulables, de tipo
varchar
tipos y que no tiene restricciones/claves. Una vez hecho esto, ejecute un procedimiento almacenado que realice la limpieza y el masaje necesarios de los datos antes de moverlos a su lugar adecuado.