Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak usunąć z bazy danych datę i godzinę, która może mieć wartość null

Wartość null SQL nie jest taka sama jak wartość null platformy .NET; musisz porównać z System.DBNull.Value:

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

W odpowiedzi na Twój komentarz, typ danych Item właściwość DataReader jest typem bazowej bazy danych. Może to być System.Data.SqlTypes.SqlDateTime dla bazy danych SQL Server innej niż null lub System.DBNull dla kolumny o wartości null lub System.Data.Odbc.OdbcTypes.SmallDateTime dla bazy danych ODBC, a właściwie czegokolwiek. Jedyną rzeczą, na której możesz polegać, jest to, że jest typu object .

Dlatego też sugeruję użycie Convert.ToDateTime() zamiast wpisywać przymus na DateTime . Nie ma gwarancji, że ODBC lub jakakolwiek kolumna daty może zostać przekonwertowana na DateTime platformy .NET . Zauważyłem, że twój komentarz określa "sqldatareader" i SQL Server System.Data.SqlTypes.SqlDateTime rzeczywiście może być zmuszona do System.DateTime , ale Twoje pierwotne pytanie nam tego nie mówiło.

Aby uzyskać więcej informacji na temat korzystania z DataReader s, skonsultuj się z 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. Jak mapować wiele partycji do jednej grupy plików w programie SQL Server (T-SQL)

  2. Nie można zmniejszyć bazy danych „tylko do odczytu” | Zmniejsz dziennik transakcji podczas korzystania z grupy dostępności AlwaysOn

  3. Czy mogę uzyskać nazwy wszystkich tabel bazy danych SQL Server w aplikacji C#?

  4. Dlaczego nie mogę użyć aliasu w instrukcji DELETE?

  5. Kilka świetnych wiadomości dla klientów wersji Standard Edition w programie SQL Server 2014