Tja, MS Access representerar dess datetime
datatyp som en double
:
- epok
(nollpunkt) i MS-kalendern är
30 December 1899 00:00:00
- Heltalsdelen av
double
är förskjutningen i dagar från epoken, och - Bråkdelen av
double
är den del av dagen.
Enligt specifikationen, domänen för datumdelen av en MS Access datetime
är
- nedre gräns:
1 January 100
- övre gräns:
31 December 9999
Och eftersom domänen för en SQL Server datetime
är:
- nedre gräns:
1 January 1753
- övre gräns:
31 December 9999
alla datum i din MS Access-databas före 1 januari 1753 kommer att orsaka problem. Du måste hitta den falska informationen och fixa den. Ett par tillvägagångssätt:
-
Skapa en vy/fråga i din åtkomstdatabas för att presentera data i en form som är välsmakande för SQL Server. Massladda sedan från det till SQL Server.
-
Ofta, eftersom det i stort sett är en självklarhet att din källdata är smutsig/skadad, kommer man att massladda in källdata till en arbetstabell när alla kolumner är nullbara, av typen
varchar
typer och som inte har några begränsningar/nycklar. När det är gjort, kör sedan en lagrad procedur som gör nödvändig rensning och massering av data innan du flyttar den till sitt rätta hem.