sql >> Database teknologi >  >> RDS >> Sqlserver

Fejl - SqlDateTime-overløb. Skal være mellem 1/1/1753 12:00:00 AM og 12/31/9999 11:59:59 PM

En DateTime i C# er en værditype, ikke en referencetype, og kan derfor ikke være null. Det kan dog være konstanten DateTime.MinValue som er uden for rækkevidden af ​​SQL-servere DATETIME datatype.

Værdityper har garanteret altid en (standard) værdi (på nul) uden altid at skulle angives eksplicit (i dette tilfælde DateTime.MinValue).

Konklusion er, at du sandsynligvis har en uindstillet DateTime-værdi, som du forsøger at overføre til databasen.

DateTime.MinValue = 1/1/0001 12:00:00 AM
DateTime.MaxValue = 23:59:59.9999999, December 31, 9999, 
                    exactly one 100-nanosecond tick 
                    before 00:00:00, January 1, 10000

MSDN:DateTime.MinValue

Angående SQL Server

MSDN:Sql Server DateTime og SmallDateTime

Til sidst, hvis du finder dig selv at sende en C# DateTime som en streng til sql, skal du formatere den på følgende måde for at bevare maksimal præcision og for at forhindre sql-serveren i at kaste en lignende fejl.

string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");

Opdatering (8 år senere)

Overvej at bruge sql DateTime2 datatype, som passer bedre med .net DateTime med datointerval 0001-01-01 through 9999-12-31 og tidsinterval 00:00:00 through 23:59:59.9999999

string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");

MSDN datetime2 (Transact-SQL)



  1. Sådan analyseres data fra rækkeobjekt i node.js,express.js,mysql2

  2. Hvornår/hvorfor skal man bruge Cascading i SQL Server?

  3. Sådan kontrolleres konfigurationsindstillingerne for databasemail i SQL Server (T-SQL)

  4. Tilslutning af en 64-bit applikation til Clarion TopSpeed