sql >> データベース >  >> RDS >> Sqlserver

データベースからnull許容のDateTimeを取得する方法

    SQLnullは.NETnullと同じではありません。 System.DBNull.Valueと比較する必要があります:

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

    あなたのコメントに答えて、Itemのデータ型 DataReaderのプロパティ 基になるデータベースタイプのものです。 System.Data.SqlTypes.SqlDateTimeの可能性があります null以外のSQLServerデータベースの場合、またはSystem.DBNull null列の場合、またはSystem.Data.Odbc.OdbcTypes.SmallDateTime ODBCデータベースの場合、または実際にはほぼすべて。信頼できる唯一のことは、タイプがobjectであるということです。 。

    これが、Convert.ToDateTime()の使用を提案する理由でもあります。 DateTimeに強制を入力する代わりに 。 ODBCまたは任意の日付列を.NETDateTimeに強制できるという保証はありません。 。あなたのコメントは「sqldatareader」とSQLServerSystem.Data.SqlTypes.SqlDateTimeを指定していることに注意してください 確かにSystem.DateTimeに強制することができます 、しかしあなたの最初の質問は私たちにそれを教えてくれませんでした。

    DataReaderの使用の詳細については s、MSDNを参照してください。



    1. MySQLのVARCHARとTEXTの違い

    2. Postgresql -bash:psql:コマンドが見つかりません

    3. Oracleは24時間以上表示します

    4. MariaDBと外部データ