Một DateTime
trong C # là một kiểu giá trị, không phải là một kiểu tham chiếu, và do đó không thể là giá trị rỗng. Tuy nhiên, nó có thể là hằng số DateTime.MinValue
nằm ngoài phạm vi của Máy chủ Sql DATETIME
loại dữ liệu.
Các loại giá trị được đảm bảo luôn có giá trị (mặc định) (bằng 0) mà không cần phải luôn đặt rõ ràng (trong trường hợp này là DateTime.MinValue).
Kết luận là bạn có thể có một giá trị DateTime chưa được đặt mà bạn đang cố gắng chuyển vào cơ sở dữ liệu.
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
Về Sql Server
MSDN: Sql Server DateTime và SmallDateTime
Cuối cùng, nếu bạn thấy mình vượt qua C # DateTime
dưới dạng một chuỗi thành sql, bạn cần định dạng nó như sau để giữ lại độ chính xác tối đa và ngăn máy chủ sql gặp lỗi tương tự.
string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
Cập nhật (8 năm sau)
Cân nhắc sử dụng sql DateTime2
kiểu dữ liệu phù hợp hơn với .net DateTime
với phạm vi ngày 0001-01-01 through 9999-12-31
và phạm vi thời gian 00:00:00 through 23:59:59.9999999
string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");
MSDN datetime2 (Giao dịch-SQL)