我在SQL Server中编写以下查询
update time_tracker
set logout = GETDATE(),
totaltime = SUBSTRING(CONVERT(varchar(20), (LOGOUT - LOGIN),120),12,8) from Time_Tracker
where userid = 0138039
and CONVERT(Date, LOGIN) = CONVERT(Date, GETDATE());
基本上,当用户点击退出按钮时,我试图达到以下目的。
当我这样做时,我得到了这个例外:
Msg 8114,Level 16,State 5,Line 1
将数据类型varchar转换为float时出错。
请让我知道我哪里出错了,我该如何解决这个问题。
此外,当我运行以下查询时
Select
SUBSTRING(CONVERT(varchar(20), (LOGOUT - LOGIN),120),12,8)
from
Time_Tracker;
工作正常,我的意思是我得到了正确的时间输出。
由于
答案 0 :(得分:2)
您正试图根据hh:mm:ss
函数中的LOGOUT - LOGIN
从12,8
获取SUBSTRING
。并将它们放入浮子柱中。
我认为最好以毫秒为单位存储整数数据类型的差异。或者为该列使用time数据类型。
尝试使用DATEDIFF:
Select DATEDIFF(ms,LOGIN,LOGOUT) from Time_Tracker;
这将为您提供两个日期之间的时间(以毫秒为单位)。
或者将您的专栏更改为time
格式。