数据库中日期时间上的空数据



我已经用这个回答了这里的各种答案,但没有一个给出真正有效的答案。核心问题(显然)是DateTime没有任何NUL的概念,所以通常

string dateValue = myReader.IsDBNull (4) ? null : myReader.GetDateTime(4) ;

不行。

我试过了

DateTime? nextDue = myReader.GetDateTime(3) == DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;

但这给了

Operator '==' cannot be applied to operands of type 'System.DateTime' and 'System.DBNull'

更改为

DateTime? nextDue = myReader.GetDateTime(3) = DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;

生产

Cannot implicitly convert type 'System.DBNull' to 'bool'

我最终将 SQL 更改为不输出 NULL 值,但我仍然想破解这个,因为它在其他地方很有用

你可以

试试

DateTime? nextDue = myReader.IsDbNull(3) ? null : (DateTime?) myReader.GetDateTime (3)
首先,

您的语法在这里:

DateTime? nextDue = myReader.GetDateTime(3) = DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;

我错了。 应该是:

DateTime? nextDue = myReader.GetDateTime(3) == DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3) ;

其次,您可以使用:

DateTime? nextDue = myReader.IsDBNull(3) ? null : (DateTime?)myReader.GetDateTime (3) ;

只需使用:

DateTime? nextDue;
if (myReader.GetDateTime(3) == DBNull.Value)
    nextDue = myReader.GetDateTime(3);
else
    nextDue = null;

或者:

DateTime? nextDue;
if (myReader.IsDBNull(3))
    nextDue = myReader.GetDateTime(3);
else
    nextDue = null;

您需要将null转换为DateTime?

DateTime? nextDue = myReader.IsDBNull(3) ? 
    null as DateTime? : 
    (DateTime?)myReader.GetDateTime (3) 

试试

  DateTime? nextDue = myReader.GetValue(3) == DBNull.Value ? null : (DateTime?)myReader.GetDateTime (3);

相关内容

  • 没有找到相关文章

最新更新