DateTime
C #에서 A 는 참조 형식이 아닌 값 형식이므로 null 일 수 없습니다. 그러나 DateTime.MinValue
Sql Servers DATETIME
데이터 유형 의 범위를 벗어난 상수 일 수 있습니다 .
값 유형은 항상 명시 적으로 설정할 필요없이 (이 경우 DateTime.MinValue) 항상 (기본값) 값 (0)을 갖도록 보장됩니다.
결론은 아마도 데이터베이스에 전달하려는 설정되지 않은 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 Server 관련
datetime
1753 년 1 월 1 일부터 9999 년 12 월 31 일까지의 300 분의 1 초 (3.33 밀리 초 또는 0.00333 초와 동일)의 정확도까지의 날짜 및 시간 데이터입니다. 값은 .000, .003 또는 .007 초 단위로 반올림됩니다.
smalldatetime
1900 년 1 월 1 일부터 2079 년 6 월 6 일까지의 날짜 및 시간 데이터 (분 단위의 정확도). 29.998 초 이하의 smalldatetime 값은 가장 가까운 분으로 내림됩니다. 29.999 초 이상의 값은 가장 가까운 분으로 반올림됩니다.
MSDN : SQL Server DateTime 및 SmallDateTime
마지막으로 C # DateTime
을 문자열로 sql에 전달하는 경우 최대 정밀도를 유지하고 SQL Server에서 유사한 오류가 발생하지 않도록 다음과 같이 형식을 지정해야합니다.
string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
업데이트 (8 년 후)
날짜 범위 및 시간 범위 DateTime2
가있는 .net에 더 잘 맞는 SQL 데이터 유형을 사용하는 것이 좋습니다.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");
MSDN datetime2 (Transact-SQL)