2009-10-15 105 views
0
var query2 = (from p in db.posts 
        where (p.date) == (from q in db.posts 
             select q.date).Max() 
        select p.date).SingleOrDefault(); 

id = Convert.ToInt32(query2); 

我在試圖從posts表中獲取最大日期時出現此錯誤,是否有其他方法?聚合操作不支持「System.Data.Linq.Binary」類型

+0

您確定p.date具有datetyme類型嗎? – 2009-10-15 10:00:14

+0

感謝您的回覆, 它作爲時間戳存儲在數據庫中 – Joe 2009-10-15 10:06:54

回答

3

TIMESTAMP是存儲爲8字節blob的內部SQL Server datatype。它與日期/時間無關 - 它只是一個內部計數器,真的。

它甚至已被否決 - 使用rowversion數據類型代替(從SQL Server 2008及更高版本開始)。

從SQL Server聯機叢書:

的SQL Server時間戳數據類型 無關,與時間或日期。 SQL 服務器時間戳是二進制數 ,它們指示 中的相對序列,其中數據修改發生在 數據庫中。時間戳數據類型 最初實現爲支持 SQL Server恢復算法。

您不能在聚合中使用字節數組字節,因爲錯誤消息說得很清楚。

我會假設你的表中有另一個DATETIME列?

看看這個優秀Timestamps vs. Datetime data types文章更多的見解。

Marc

+0

我從時間戳更改爲日期時間,它工作。 我是LINQ/Sql的新手,並且在MYsql時間戳中工作正常。 謝謝你的回答 – Joe 2009-10-15 11:14:26

+0

@Joe:沒問題。是的,名字「TIMESTAMP」可能會讓人誤解!這就是爲什麼他們將其改爲「ROWVERSION」 - 看起來更直觀 – 2009-10-15 11:27:30

相關問題