sql >> Databasteknik >  >> RDS >> Sqlserver

Fel - SQLDateTime-spill. Måste vara mellan 1/1/1753 12:00:00 AM och 12/31/9999 11:59:59 PM

En DateTime i C# är en värdetyp, inte en referenstyp, och kan därför inte vara null. Det kan dock vara konstanten DateTime.MinValue som ligger utanför intervallet för SQL-servrar DATETIME data typ.

Värdetyper har garanterat alltid ett (standard)värde (noll) utan att alltid behöva anges uttryckligen (i det här fallet DateTime.MinValue).

Slutsats är att du förmodligen har ett oinställt DateTime-värde som du försöker skicka till 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 och SmallDateTime

Slutligen, om du kommer på dig själv att skicka en C# DateTime som en sträng till sql, måste du formatera den enligt följande för att bibehålla maximal precision och för att förhindra att sql-servern ger ett liknande fel.

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

Uppdatering (8 år senare)

Överväg att använda sql DateTime2 datatyp som passar bättre med .net DateTime med datumintervall 0001-01-01 through 9999-12-31 och tidsintervall 00:00:00 through 23:59:59.9999999

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

MSDN datetime2 (Transact-SQL)



  1. Oracle SQL Group By if

  2. mysql-transaktioner i asp.net?

  3. Hur summerar man ett värde i en JSONB-array i Postgresql?

  4. Hur man extraherar eller konverterar tidsdata från en sträng i SQL Server