A DateTime
v C# je typ hodnoty, nikoli typ odkazu, a proto nemůže být null. Může to však být konstanta DateTime.MinValue
který je mimo rozsah serverů SQL DATETIME
datový typ.
U typů hodnot je zaručeno, že budou mít vždy (výchozí) hodnotu (nulu), aniž by je bylo nutné vždy explicitně nastavit (v tomto případě DateTime.MinValue).
Závěr je, že pravděpodobně máte nenastavenou hodnotu DateTime, kterou se pokoušíte předat do databáze.
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
Pokud jde o SQL Server
MSDN:Sql Server DateTime a SmallDateTime
A konečně, pokud zjistíte, že předáváte C# DateTime
jako řetězec pro sql jej musíte naformátovat následovně, abyste zachovali maximální přesnost a zabránili serveru SQL ve vyvolání podobné chyby.
string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
Aktualizace (8 let později)
Zvažte použití sql DateTime2
datový typ, který lépe odpovídá .net DateTime
s rozsahem dat 0001-01-01 through 9999-12-31
a časový rozsah 00:00:00 through 23:59:59.9999999
string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");