Câu trả lời bạn nhận được đã cho bạn thấy hai cách khác nhau để chuyển đổi giá trị. Một là sử dụng chuyển đổi rõ ràng được xác định cho SqlDateTime
thành DateTime
, cách khác là truy cập thuộc tính .Value
trên cá thể SqlDateTime
, trả về số DateTime
.
var date = theSqlDate.Value; // via property
var date = (DateTime)theSqlDate; // via explicit conversion
Có sự cân nhắc đáng xem xét. SqlDateTime
hỗ trợ khái niệm về giá trị null trong cơ sở dữ liệu (DBNull, được tham chiếu bởi một câu trả lời đã xóa khác) thông qua giá trị SqlDateTime.Null
. Nếu bạn truy cập vào thuộc tính Value
trên phiên bản "không hợp lệ", bạn sẽ chạy vào một SqlNullValueException
. Mặt khác, một chuyển đổi rõ ràng đối với kết quả DateTime trong {January 1, 1900 12:00:00 AM}
. Không có kết quả nào trong số các kết quả này có thể được mong muốn trong mã của bạn. Ghi đè một mục nhập null hợp lệ tại cơ sở dữ liệu với một giá trị mặc định không null có thể chỉ là xấu như nhận được một ngoại lệ khi chạy.
Nếu bạn có một cột nullable trong cơ sở dữ liệu, và nếu bạn đang làm việc với SqlDateTime
, bạn có thể cần phải kiểm tra một cách rõ ràng cho điều trị và SqlDateTime.Null
cách khác nhau, và sau đó nó có thể không quan trọng mà cách tiếp cận bạn đi để chuyển đổi các giá trị khác.
DateTime? date;
if (theSqlDate.Equals(SqlDateTime.Null))
date = null
else
date = theSqlDate.Value; // or (DateTime)theSqlDate;
Nguồn
2011-10-07 14:38:23
Cảm ơn vì điều này. Mã của bạn đã giúp tôi đọc một trả về SQL 'DateTime dateValue = Convert.ToDateTime (reader.GetValue (8));' –