Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách lấy DateTime nullable ra khỏi cơ sở dữ liệu

SQL null không giống với .NET null; bạn phải so sánh với System.DBNull.Value:

object sqlDateTime = sqldatareader[0];
DateTime? dt = (sqlDateTime == System.DBNull.Value)
    ? (DateTime?)null
    : Convert.ToDateTime(sqlDateTime);

Để trả lời cho nhận xét của bạn, kiểu dữ liệu của Item thuộc tính của DataReader là kiểu cơ sở dữ liệu cơ bản. Nó có thể là System.Data.SqlTypes.SqlDateTime cho cơ sở dữ liệu SQL Server không rỗng hoặc System.DBNull cho cột rỗng hoặc System.Data.Odbc.OdbcTypes.SmallDateTime cho cơ sở dữ liệu ODBC hoặc thực sự chỉ về bất kỳ thứ gì. Điều duy nhất bạn có thể dựa vào là nó thuộc loại object .

Đây cũng là lý do tại sao tôi khuyên bạn nên sử dụng Convert.ToDateTime() thay vì ép buộc nhập vào DateTime . Không có gì đảm bảo rằng ODBC hoặc bất kỳ cột ngày nào có thể bị ép buộc vào một .NET DateTime . Tôi lưu ý rằng nhận xét của bạn chỉ định một "sqldatareader" và một SQL Server System.Data.SqlTypes.SqlDateTime thực sự có thể bị ép buộc vào System.DateTime , nhưng câu hỏi ban đầu của bạn không cho chúng tôi biết điều đó.

Để biết thêm thông tin về cách sử dụng DataReader s, tham khảo ý kiến ​​MSDN.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi số tháng thành hàm tên tháng trong SQL

  2. Làm cách nào để tạo khóa tổng hợp với SQL Server Management Studio?

  3. Giao dịch phân tán trên máy chủ được liên kết giữa máy chủ sql và mysql

  4. Không thể kết nối với SQL Server bằng PHP

  5. Trạng thái và phiên hoạt động của SQL Server