Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara mengeluarkan DateTime yang dapat dibatalkan dari database

Null SQL tidak sama dengan .NET null; anda harus membandingkan dengan System.DBNull.Value:

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

Sebagai jawaban atas komentar Anda, tipe data Item properti dari DataReader adalah tipe database yang mendasarinya. Bisa jadi System.Data.SqlTypes.SqlDateTime untuk database SQL Server non-null, atau System.DBNull untuk kolom nol, atau System.Data.Odbc.OdbcTypes.SmallDateTime untuk database ODBC, atau benar-benar apa saja. Satu-satunya hal yang dapat Anda andalkan adalah tipe object .

Ini juga mengapa saya menyarankan menggunakan Convert.ToDateTime() alih-alih mengetik paksaan ke DateTime . Tidak ada jaminan ODBC atau kolom tanggal apa pun dapat dipaksa ke .NET DateTime . Saya perhatikan komentar Anda menentukan "sqldatareader", dan SQL Server System.Data.SqlTypes.SqlDateTime memang bisa dipaksa ke System.DateTime , tetapi pertanyaan awal Anda tidak memberi tahu kami hal itu.

Untuk informasi lebih lanjut tentang menggunakan DataReader s, konsultasikan dengan 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. Gabung alami di SQL Server

  2. SQL - Bagaimana cara menyimpan dan menavigasi hierarki?

  3. Menggunakan PIVOT di SQL Server 2008

  4. SQL Server, ubah instance bernama ke instance default?

  5. Cara Instal sqlcmd &bcp di SUSE