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");