我有一个登录/退出系统,可以计算员工的总工时。我的问题是日期和时间差的格式化分钟。
示例:
如果用户已登录 8:00 AM
并已注销 6:30 PM
,则总计 10.50
< / strong>但我的SQL输出是 10 hrs and 30 mins
。我知道公式(它应该是30mins/60 = 50
),但我不知道我应该在哪里将该红利( /60
)放在我的SQL查询上。(see below my SQL Code)
SQL代码:
SELECT *,CAST(Datediff(HOUR, 0, logout_time - login_time) +
Cast(Datediff(MINUTE, 0, logout_time - login_time) -
(Datediff(HOUR, 0, logout_time - login_time) * 60 ) AS DECIMAL) / 100 AS Decimal(18,2)) AS [TotalHrs_Worked]
FROM table_DTR
WHERE CONVERT(VARCHAR(10),log_date, 101) BETWEEN '09/01/2014' AND '11/30/2014'
答案 0 :(得分:1)
如果您只是在一对日期时间值之间取分钟并将其乘以60.0
(带小数位,以便产生带小数值的结果),这应该没有问题:
运行此示例:
DECLARE @start DATETIME = '2014-12-15 08:00:00'
DECLARE @end DATETIME = '2014-12-15 18:30:00'
SELECT DATEDIFF(minute, @start, @end)/60.0 AS HoursWorked
这将产生:
10.50
您不应该像在SQL中那样将其分解为几分钟和几小时。