日期和时差格式

时间:2014-12-15 07:29:46

标签: sql-server vb.net datetime

我有一个登录/退出系统,可以计算员工的总工时。我的问题是日期和时间差的格式化分钟。

示例:

如果用户已登录 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'

1 个答案:

答案 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中那样将其分解为几分钟和几小时。