2015-04-28 66 views
-4

我有一個表Employee。有人在過去3小時內更新了一些記錄。我想獲得更新的記錄。 如果可能,我需要在sql之前的記錄和當前記錄之間的差異。 我想要一個答案作爲查詢。如何獲得最近3小時內更新的記錄sql

+0

什麼是你的表結構?如果您存儲「CreatedDate/UpdatedDate」之類的內容,則可以使用Tim Schmelter提供的解決方案 – ughai

+0

如果您沒有進行審覈,則不會獲得以前的值。 sql服務器沒有行的本地版本控制。 –

回答

3

使用DATEDIFF

SELECT e.* 
FROM Employee e 
WHERE DATEDIFF(HOUR, e.UpdatedAt, GETDATE()) <= 3 
+0

您正在考慮員工中的UpdatedAt列。但我沒有任何列保持更新時間。我正在考慮從sql server內部時間戳中獲取它。 –

+0

@HemantMalpote:然後你需要添加一個。引用[this](http://stackoverflow.com/questions/6344413/sqlserver-row-date-last-modified):_「爲了記錄或頁面的磁盤結構不包含任何對最後一次更新時間的引用......在記錄/行級別沒有這樣的信息。「_考慮SQL-Server是用來存儲數十億條記錄的,爲什麼它應該存儲可能從未使用過的信息? –

0

如果您有與數據類型行版本的表中的任何列,則時間戳值會自動在你的表添加到每個行。此列值將在每次對特定行進行任何操作時進行修改。行版本是行的時間戳記值。如果我們更新了行中任何行的值,行的值將自​​動更新。表。新的時間戳值將始終是最大的TIMESTAMP值的下一個遞增的值在table.To所有行之間存在拿到最後更新,只是查詢最新的3行版本列

CREATE TABLE Employee(EmployeeID int PRIMARY KEY, VerCol rowversion) ; 
相關問題