2015-04-28 65 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) ; 
相关问题