DateTime
в C# е тип стойност, а не референтен тип и следователно не може да бъде нула. Може обаче да бъде константата DateTime.MinValue
който е извън обхвата на Sql сървърите DATETIME
тип данни.
Гарантирано е, че типовете стойности винаги имат (по подразбиране) стойност (нула), без винаги да е необходимо да бъдат изрично зададени (в този случай DateTime.MinValue).
Заключението е, че вероятно имате ненастроена стойност DateTime, която се опитвате да предадете към базата данни.
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
Относно Sql сървър
MSDN:Sql Server DateTime и SmallDateTime
И накрая, ако установите, че предавате C# DateTime
като низ към sql, трябва да го форматирате по следния начин, за да запазите максимална прецизност и да попречите на sql сървъра да издаде подобна грешка.
string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
Актуализация (8 години по-късно)
Обмислете използването на sql DateTime2
тип данни, който се подравнява по-добре с .net DateTime
с период от време 0001-01-01 through 9999-12-31
и времеви диапазон 00:00:00 through 23:59:59.9999999
string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");