Cóż, MS Access reprezentuje swoją datetime
typ danych jako double
:
- epoka
(punkt zerowy) kalendarza MS to
30 December 1899 00:00:00
- Część całkowita elementu
double
jest przesunięciem w dniach od epoki, oraz - Ułamkowa część
double
to ułamkowa część dnia.
Zgodnie ze specyfikacją, domena części daty w MS Access datetime
jest
- dolna granica:
1 January 100
- górna granica:
31 December 9999
A ponieważ domena SQL Server datetime
jest:
- dolna granica:
1 January 1753
- górna granica:
31 December 9999
wszelkie daty w bazie danych MS Access sprzed 1 stycznia 1753 r. będą powodować problemy. Musisz znaleźć fałszywe dane i je naprawić. Kilka podejść:
-
W bazie danych dostępu utwórz widok/zapytanie, aby przedstawić dane w formie przystępnej dla SQL Server. Następnie załaduj zbiorczo z tego do SQL Server.
-
Często, ponieważ jest to prawie przesądzone, że dane źródłowe są brudne/uszkodzone, podczas zbiorczego ładowania danych do SQL Server, dane źródłowe zostaną załadowane zbiorczo do tabeli roboczej, w której wszystkie kolumny mają wartość null, typu
varchar
typy i które nie mają ograniczeń/kluczy. Gdy to zrobisz, uruchom procedurę składowaną, która wykona niezbędne czyszczenie i masowanie danych przed przeniesieniem ich do właściwego miejsca zamieszkania.