【发布时间】:2014-08-03 03:03:48
【问题描述】:
我有一个表,其中包含一个名为 CHECKTIME 的 DATETIME 列,它表示员工何时打卡/打卡。基本上,我有一个执行该功能的查询,但转换不正确。下面的例子。
CHECKTIME
2014-04-28 07:58:36.000
2014-04-28 12:00:27.000
2014-04-28 13:00:02.000
2014-04-28 16:57:45.000
我的查询结果是 Hour = 7.99,而实际结果是 Hours = 7.59。
我想要 7.59 的结果。
SELECT USERID
, convert(varchar(10),CHECKTIME,101) as Date
, SUM(CASE WHEN CHECKTYPE='I'
THEN -1*(datepart(hh,[CHECKTIME])+datepart(mi,[CHECKTIME])/60.0)
ELSE datepart(hh,[CHECKTIME])+datepart(mi,[CHECKTIME])/60.0 END) AS Hours
FROM [CHECKINOUT]
WHERE USERID=1003
GROUP BY USERID, CONVERT(varchar(10),[CHECKTIME],101)
【问题讨论】:
-
抱歉,我理解起来有点困难。你是说你的结果是十进制小时,你想把它转换成小时和分钟?
-
不,结果以小时为单位,但十进制部分 0.99 需要转换为分钟......这就是我的想法......
-
您想添加您正在执行请求的表的结构,并提供一个示例吗?
标签: sql sql-server sql-server-2008