Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да извадите нулеви DateTime от базата данни

SQL null не е същото като .NET null; трябва да сравните със System.DBNull.Value:

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

В отговор на вашия коментар, типът данни на Item свойство на DataReader е този на основния тип база данни. Може да е System.Data.SqlTypes.SqlDateTime за ненулева база данни на SQL Server или System.DBNull за нулева колона или System.Data.Odbc.OdbcTypes.SmallDateTime за ODBC база данни или наистина почти всичко. Единственото нещо, на което можете да разчитате, е, че е от тип object .

Ето защо предлагам да използвате Convert.ToDateTime() вместо тип принуда към DateTime . Няма гаранция, че ODBC или каквато и да е колона за дата може да бъде принудена към .NET DateTime . Отбелязвам, че вашият коментар посочва "sqldatareader" и SQL Server System.Data.SqlTypes.SqlDateTime наистина може да бъде принуден към System.DateTime , но първоначалният ви въпрос не ни каза това.

За повече информация относно използването на DataReader s, консултирайте се с 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. Вмъкване на големи обектни данни в Salesforce.com от SQL Server

  2. Има ли някакви недостатъци винаги да използвате nvarchar(MAX)?

  3. Изтриване на пощенски профил на база данни (SSMS)

  4. Fix Error Msg 4151 „Типът на първия аргумент за NULLIF не може да бъде константа NULL, защото типът на първия аргумент трябва да бъде известен“ в SQL Server

  5. 2 начина да получите информация за дялове за таблица в SQL Server (T-SQL)