一种在sql中排除NULL并计算小时数

时间:2018-05-28 09:46:45

标签: c# sql

我有一个小问题,我买不起最好的,所以我需要一些经验丰富的人的帮助。 即:

我做了一个计算时间从(ZPZ_Von)到(ZPZ_Bis)的方法,现在有一个问题,如果在sql中它在同一天出现零时间,我怎么能计算时间,而忽略这个NULL什么节目告诉我。

表示只在sql中显示多少NULL NULL来计算错误所需的时间。

这是我计算错误发生时间的方法:

  private TimeSpan CalculateWorkingHours(List<PRAESENZZEIT> arrivals)
    {
        return new TimeSpan(arrivals.Sum(x => (x.ZPZ_Bis.TimeOfDay - x.ZPZ_Von.TimeOfDay).Ticks));
    }

这是我的数据库数据的外观: enter image description here

此刻,该方法计算来自基数的所有数据,包括此null并转换为10:16,我需要一个方法,如果sql中有NULL并且计算时间将跳过,在这种情况下它将是对6.41

2 个答案:

答案 0 :(得分:0)

如果从数据库填充arrivals变量,则可以跳过具有空值的记录。或者当您在其上创建List<PRAESENZZEIT>循环并为Nullable<DateTime>字段设置默认值然后计算差异时

using(var context = new DataContext)
{
   var arrivals = context.TableX.Where(t=>t.Date1 != null || t.Date2 != null).ToList
}

没有测试这段代码是从头顶写的

答案 1 :(得分:0)

使用where子句跳过空值,如下所示:

    return new TimeSpan(arrivals
      .Where(x => x.ZPZ_Bis.TimeOfDay != null)
      .Sum(x => (x.ZPZ_Bis.TimeOfDay - x.ZPZ_Von.TimeOfDay).Ticks));