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