sql - T-SQL中一组时间差的总和?
问题描述
我想总结所有时间差异以显示总工作时间。
select
aaaa
from
employee B
inner join
(select
s.emp_reader_id,
Sum(case when s.in_time is not null and s.out_time is not null and s.shift_type_id=5 and LOWER(DATENAME(dw, [att_date]))='friday'then
cast(datediff(minute,'00:00:00', '23:59:59') / 60 +
(datediff(minute,'00:00:00', '23:59:59') % 60 / 100.0) as decimal(7, 4)
) end) as aaaa
from
Daily_attendance_data s
left outer join
employee bb on s.emp_reader_id = bb.emp_reader_id
where
att_date between '2018-10-01' and '2018-10-31'
and s.emp_reader_id = 1039
group by
s.emp_reader_id) A on B.emp_reader_id = A.emp_reader_id
电流输出:
aaaa
47.1800
它按小时给出了时间列表,但我想把它总结为一个总数。
它只会总计
样本数据 :
23:59
23:59
预期输出:
47.58
解决方案
我认为您应该将所有时间转换为秒,计算 SUM 然后将总数转换为HH:mm:ss
.
计算秒数的总和
DECLARE @TimeinSecond as integer = 0 select @TimeinSecond = Sum(DATEDIFF(SECOND, '0:00:00', [WorkHrs])) from Daily_attendance_data
转换 HH:mm:ss 格式
SELECT RIGHT('0' + CAST(@TimeinSecond / 3600 AS VARCHAR),2) + ':' + RIGHT('0' + CAST((@TimeinSecond / 60) % 60 AS VARCHAR),2) + ':' + RIGHT('0' + CAST(@TimeinSecond % 60 AS VARCHAR),2)
参考
推荐阅读
- php - $this 在 php 中如何工作?
- html - How to align the octagon and p tag at the center of col
- php - PHP normalize multidimensional array
- mysql - 我的 SQL:找到上一个日期的最高分数
- latex - 使用 belowcaptionskip IEEEtran 后小节的缩进发生变化
- javascript - 强制门户身份验证后存储的 cookie 消失
- c# - 收益返回和“并非所有代码路径都返回值”
- java - 在非二叉树中查找节点 [Java]
- php - 使用我的 PHP 登录页面验证 mySQL 数据库时遇到问题
- java - EMF (OCL) 将两个枚举合并为一个