我有一个表,其中包含两个单独的日期和时间列(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.
如何纠正/纠正此错误?
答案 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)
在表格中添加“更新时间”字段并将当前时间与此字段进行比较的最简单方法。