sql >> Databasteknik >  >> RDS >> Sqlserver

Datum måste vara mellan 1/1/1753 12:00:00 AM och 12/31/9999 11:59:59 PM OverFlow error SqlBulkCopy

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.




  1. Funktionsbaserat index i SQL SERVER 2005

  2. Bästa sättet att felfånga LADDA DATA LOKAL INFIL?

  3. hur man uppdaterar data med hjälp av vilolägesfråga med överordnad egendom i where-klausulen

  4. Hur ställer jag in konfigurationen i OpenCart?