令人困惑的结果在SQL Server中

时间:2016-08-25 15:04:23

标签: sql sql-server

我有这些疑问:

String sql = "update time_tracker set logout = ?, totaltime = DATEDIFF(second, login, logout) from Time_Tracker where userid= ? AND CONVERT(Date, LOGIN) = CONVERT(Date, GETDATE())";

并且

select DATEDIFF(second, login, logout) as timeDiff 
from Time_Tracker 
where CONVERT(Date, LOGIN) = CONVERT(Date, GETDATE())

当我运行第一个查询并执行select * from table时,我得到以下输出。

enter image description here

但是当我运行第二个查询时,结果是

enter image description here

这很令人困惑,请让我知道我哪里出错了,我该如何解决这个问题。

感谢。

1 个答案:

答案 0 :(得分:2)

这部分查询不正确:

set logout = ?, totaltime = DATEDIFF(second, login, logout)

这是将logout设置为参数中的新值,但将totaltime设置为login与之前存在的{{1}之间的差异(秒)价值。这就是为什么您只看到logout,因为之前的394值必须是logout

要解决此问题,您应该将相同的2016-08-25 20:23:28.000参数传递给?函数:

DATEDIFF()