2009-10-20 32 views
2

我有日期和時間(SQL Server 2008中)兩個單獨列的表從指定的日期和時間範圍之間的數據庫獲取數據。使用LINQ-SQL

我想目前的時間和我的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) 

但是從上面的where條件,它拋出一個錯誤:

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

我可以糾正/糾正如何這個錯誤?

回答

1

轉換爲.AsEnumerable()和操作的日期和時間,並返回爲.AsQueryable();

2

不要where子句中添加分鐘,嘗試這樣的事情,而不是:

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 

的LINQ to SQL嘗試翻譯您where條款爲有效的T-SQL(使用T-SQL's dateadd function),它是這樣做有困難。

+0

我已經嘗試了上述條件也和它不允許在添加ce.Start_Date.Add(ce.Start_Time)where條件,甚至讓使用 – Prasad

0

最簡單的方式來增加「更新時間」字段的表,並比較當前時間與此字段。

1

這個問題似乎是與沒有正確的SQL翻譯服務器DATE類型。
儘量讓LINQ轉換日期爲DateTime,這樣的事情:

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