0

我在表中有如下数据。

TimeIn                   TimeOut           
-------------------------------------
6/1/2010 09:00:00   Null     
6/2/2010 09:00:00   6/2/2010 16:45:00       
6/3/2010 10:05:00   Null                    
6/4/2010 07:30:00   6/4/2010 15:45:00    

我有存储过程来查找带有“未注销”列的最后一个活动

我也有一个将单元格复制到其他单元格的存储过程...

然后,我需要的是更新 [TimeOut] (如果没有超时)

通过更优雅的方式,比如

UPDATE TimeOut SET DATEPART(HOUR, TimeOut) = DATEPART(HOUR, TimeIN) + 8

所以整个想法是首先检查最后一个活动 - 超时列是否为空

然后如果是,请签署 TimeOut 并允许最长工作时间 (8)。

有简单的方法吗?

更新

至于马克的回答,这是找出用户是否没有退出的选择

SELECT CASE WHEN [TimeOut] IS NULL THEN '' ELSE CONVERT(NVARCHAR,[TimeOut]) END FROM tblTime WHERE tId = ( SELECT MAX(tId) FROM tblTime WHERE UserId = 123

所以我有一个查询来查找谁没有在最后一次活动中退出

那么我只需要更新那个特定的 Row - 字段TimeOut

+ 8 有几个小时的时间,这是我的问题

4

3 回答 3

1

看起来你应该使用dateadd.

UPDATE TimeOut 
SET TimeOut = DATEADD(HOUR, 8, TimeIN)
WHERE ....

这将设置TimeOutTimeIn加八小时。

于 2012-10-21T20:17:17.897 回答
0
UPDATE tblTime  SET TimeOut = DATEADD(HOUR,8,TimeIn) WHERE tId = ( SELECT MAX(tId) FROM tblTime WHERE UserId = 1234)
于 2012-10-21T21:31:52.053 回答
0

添加一个where TimeOut IS NULL子句,使其仅更新该字段实际为空的那些?

于 2012-10-21T19:22:10.447 回答