在后端的某些日期行为NULL时搜索日期字段

时间:2013-12-02 16:26:04

标签: c# sql entity-framework datetime

用户选择一些fromto日期以及SqlBuilder我正在创建要运行数据库记录的查询字符串。因此,生成查询的部分内容可能如下所示:

WHERE  ( t1.From_Date >= @from_date AND t1.To_Date <= @to_date ) 

但由于某些原因我不知道,如果我去SQL Server并看到其中一些行NULLfrom列中有to行。所以它导致我的查询不返回那些行。 有没有办法在代码的C#端解决这个问题?

3 个答案:

答案 0 :(得分:1)

如果您想要包含这些行,只需调整WHERE子句:

WHERE  t1.From_Date IS NULL OR
       t1.To_Date   IS NULL OR
       ( t1.From_Date >= @from_date AND t1.To_Date <= @to_date ) 

答案 1 :(得分:0)

我会修复查询以执行以下操作:

where (isnull(t1.From_Date, @from_date) >= @from_date 
    and isnull(t1.To_Date, @to_date) <= @to_date) 

变异:

where (t1.From_Date is null or t1.From_Date >= @from_date) 
    and (t1.To_Date is null or t1.To_Date <= @to_date)

答案 2 :(得分:0)

最好先修复数据,否则只需执行'select *'并在搜索记录时,实例化一个加载每个属性的类,如果prop为null则使其成为任何值.save类对象哈希表并使用你喜欢的记录集。请记住,这只是在你需要以某种方式过滤或呈现数据的时候。如果你只是想省略记录,请使用下面的查询。