sql-server - 计算 hh 中的时差 :mm

标签 sql-server

我有这个查询,但我不确定要使用什么函数,所以我可以获得这种“hh:mm”格式的时差。有人可以帮忙吗?

SELECT        
EI.[FirstName]+' '+EI.[LastName] [EmployeeName], [Dpt].[FullName] [Department], [Desig].[FullName] [Designation],
FirstIN    = CAST(MIN([AttendanceTimeIn]) AS TIME), 
LastOUT    = CAST(MAX([AttendanceTimeOut]) AS TIME), 
HoursSpent = DATEDIFF(HOUR, CAST(MIN(AttendanceTimeIn) AS TIME), CAST(MAX(AttendanceTimeOut) AS TIME)),
CAST(COALESCE(AttendanceTimeIn, AttendanceTimeOut) AS DATE) [Date]

FROM [HRM].[tbl_Designation] [Desig], [HRM].[tbl_Department] [Dpt], [HRM].[tbl_EmployeeInfo] [EI]

FULL OUTER JOIN [HRM].[tbl_EmployeeAttendance] [Attendance] ON [Attendance].[EmpCode] = [EI].[ID] 

WHERE 

[Dpt].[ID] = [EI].[DeptCode] AND [Desig].[ID] = [EI].[DesignationCode]
AND
[EI].[RecordStatusCode] != '13'
AND 
CAST((GETDATE()-1) AS DATE) = CAST(ISNULL([AttendanceTimeIn], [AttendanceTimeOut]) AS Date)

GROUP BY
EI.[FirstName]+' '+EI.[LastName], [Dpt].[FullName], [Desig].[FullName], CAST(COALESCE(AttendanceTimeIn, AttendanceTimeOut) AS DATE)

最佳答案

也许你可以使用这样的东西:

declare @d1 datetime = '2018-01-11 23:40:18.010'
declare @d2 datetime = '2018-01-12 11:59:18.010'

SELECT CONVERT(VARCHAR(2),DATEPART(HOUR,@d2 - @d1)) + ':' + CONVERT(VARCHAR(2),DATEPART(MINUTE,@d2 - @d1));

关于sql-server - 计算 hh 中的时差 :mm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48224407/

相关文章:

java - Hibernate断言失败

c# - 无法在对象中插入重复的键行

c# - 仅显示一个选择的100个结果

java.sql.SQL警告: [Microsoft][SQLServer 2000 Driver for JDBC]Database changed to X

c++ - 如何通过使用sql查询仅将值添加到一张表来将值插入到不同的表中?

sql - 检查约束 - 在此上下文中不允许子查询

java - DbUnit-JdbcSQLException : Function "*" not found

sql-server - 非常慢的 VARBINARY(MAX) 选择

java - 如何在 Spring 中设置 SNAPSHOT 隔离级别

sql - 如何检索数据库中所有表的结果集及其磁盘空间使用情况