使用linq-sql在指定的日期和时间范围内从数据库获取数据

时间:2009-10-20 12:31:56

标签: c# linq-to-sql

我有一个表,其中包含两个单独的日期和时间列(SQL Server 2008)。

我试图在我的asp.net MVC(C#)应用程序中获取当前时间前1分钟和当前当前时间后1分钟的数据。

我曾尝试将where条件用作:

ce.Start_Date.Add(ce.Start_Time) >= _currDateTime.AddMinutes(-1) && 
ce.Start_Date.Add(ce.Start_Time) <= _currDateTime.AddMinutes(1)

但是从上面的条件来看,它会抛出一个错误:

The datepart millisecond is not supported by 
  date function dateadd for data type date.

如何纠正/纠正此错误?

4 个答案:

答案 0 :(得分:2)

请勿在{{1​​}}子句中添加分钟,请尝试使用以下内容:

where

LINQ to SQL正在尝试将您的for ce in data let start = _currDateTime.AddMinutes(-1) let end = _currDateTime.AddMinutes(1) where ce.Start_Date.Add(ce.Start_Time) >= start && ce.Start_Date.Add(ce.Start_Time) <= end select ce 子句转换为有效的T-SQL(使用T-SQL's dateadd function),而且它在执行此操作时遇到了麻烦。

答案 1 :(得分:1)

问题似乎是服务器DATE类型没有正确的SQL转换。
尝试将LINQ转换为Date到DateTime,如下所示:

 Convert.ToDateTime(ce.Start_Date).Add(ce.Start_Time)

答案 2 :(得分:1)

转换为.AsEnumerable()并操纵日期和时间并返回.AsQueryable();

答案 3 :(得分:0)

在表格中添加“更新时间”字段并将当前时间与此字段进行比较的最简单方法。