来自数据库的DateTime上的空数据

时间:2013-01-30 13:04:30

标签: c# sql datetime null

我已经完成了这个问题的各种答案,但是没有一个答案能够真正起作用。 核心问题(显然)是DateTime没有任何NULL概念,所以通常是

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值,但我仍然想破解这个值,因为它在其他地方会有用

5 个答案:

答案 0 :(得分:1)

你可以尝试

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

答案 1 :(得分:1)

首先是你的语法:

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

id错误。应该是:

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

其次你可以使用:

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

答案 2 :(得分:0)

只需使用:

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;

答案 3 :(得分:0)

您需要将null转换为DateTime?

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

答案 4 :(得分:0)

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