sql >> Databáze >  >> RDS >> Sqlserver

Jak z databáze dostat DateTime s možnou hodnotou Null

Hodnota SQL null není stejná jako hodnota .NET null; musíte porovnat s System.DBNull.Value:

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

V odpovědi na váš komentář typ dat Item vlastnost DataReader je typ podkladové databáze. Může to být System.Data.SqlTypes.SqlDateTime pro nenulovou databázi SQL Server nebo System.DBNull pro prázdný sloupec nebo System.Data.Odbc.OdbcTypes.SmallDateTime pro databázi ODBC nebo opravdu cokoliv. Jediné, na co se můžete spolehnout, je, že je typu object .

To je také důvod, proč doporučuji použít Convert.ToDateTime() místo typu donucení zadejte DateTime . Neexistuje žádná záruka, že ODBC nebo jakýkoli sloupec s datem bude možné převést na DateTime .NET . Beru na vědomí, že váš komentář specifikuje "sqldatareader" a SQL Server System.Data.SqlTypes.SqlDateTime lze skutečně vynutit System.DateTime , ale vaše původní otázka nám to neřekla.

Další informace o používání DataReader s, obraťte se na MSDN.



  1. Vynutit Oracle Drop Global Temp Table

  2. Vyhodnocování, když je vyhodnocen výraz v dotazu

  3. Výkonnostní limity řešení logické replikace

  4. Neshoda verze Postgresql 9.2 pg_dump