将DateTime变量与DateTime数据类型列进行比较,其中包含Null值

时间:2015-05-31 19:21:29

标签: c# datetime null

我必须从sql server db对数组中的记录进行c#搜索  使用3个数据元素。其中一个数据元素必须是名为DateOfBirth的列中的DateTime元素。不幸的是,此列中有很多空值,我无法弄清楚如何将DateTime变量与具有NULL值的字段进行比较。我看到很多答案似乎与我在这里所需要的很接近,但没有任何帮助。感谢您的帮助,这是我的格式。

if ((DateTime)dt == (DateTime)temp[i].Individual.DateOfBirth)
    GlobalNum3.bnum3 = 1;

2 个答案:

答案 0 :(得分:1)

我假设dt已经是DateTime,在这种情况下它不能为空(DateTimestruct)并且没有必要强制转换它。此外,temp[i].Individual.DateOfBirth也是DateTime,因此也不能null,或者Nullable<DateTime> DateTimes

假设两者都是nulls,则数据库DateTime.MinValue将设置为if (dt == (DateTime)temp[i].Individual.DateOfBirth) { GlobalNum3.bnum3 = 1; } ,因此只需比较值:

temp[i].Individual.DateOfBirth

但是,如果Nullable<DateTime>null,可能是var possibleDateOfBirth = temp[i].Individual.DateOfBirth; if (possibleDateOfBirth != null && possibleDateOfBirth.HasValue && dt == possibleDateOfBirth.Value) { GlobalNum3.bnum3 = 1; } ,或者可能根本没有值,请按照以下方式使用:

$(document).ready(function(){

     app.modularized.publ("xyz");

});

var app = window.app || {}

// If "app" is defined use an empty object. "app" is the namespace

app.modularized = function(){ // module

    // private members

    var privateVar, privateVar2,

    foo = function() {},

    bar = function(text){
          alert(" ... " + text);
    }

    // public interface

    return {         
       publ: bar
    }

}();   // a.k.a Revealing Module Pattern.

答案 1 :(得分:0)

如果您正在查询数据库,请尝试测试可以为空的。HasValue属性,如下所示:

if (temp[i].Individual.DateOfBirth.HasValue && dt == temp[i].Individual.DateOfBirth.Value)
{
   GlobalNum3.bnum3 = 1;
}

显然我假设您正在测试DateTime?属性。