Bene, MS Access rappresenta il suo datetime
tipo di dati come double
:
- L'epoca
(punto zero) del calendario MS è
30 December 1899 00:00:00
- La parte intera del
double
è l'offset in giorni dall'epoca, e - La parte frazionaria del
double
è la parte frazionaria del giorno.
Secondo la specifica, il dominio della parte della data di un datetime
di MS Access è
- limite inferiore:
1 January 100
- limite superiore:
31 December 9999
E poiché il dominio di un SQL Server datetime
è:
- limite inferiore:
1 January 1753
- limite superiore:
31 December 9999
qualsiasi data nel database di MS Access precedente al 1 gennaio 1753 causerà problemi. Devi trovare i dati fasulli e risolverli. Un paio di approcci:
-
Nel database di accesso, crea una vista/query per presentare i dati in una forma accettabile per SQL Server. Quindi, carica in blocco da quello in SQL Server.
-
Spesso, poiché è praticamente una conclusione scontata che i dati di origine siano sporchi/corrotti, durante il caricamento in blocco dei dati in SQL Server, si caricheranno in blocco i dati di origine in una tabella di lavoro in cui tutte le colonne sono annullabili, di tipo
varchar
tipi e che non ha vincoli/chiavi. Una volta fatto, esegui una procedura memorizzata che esegue la pulizia e il massaggio necessari dei dati prima di spostarli nella loro sede corretta.