当前位置: 代码迷 >> Sql Server >> 怎么求SQL时间差之和,就是多条记录,开始时间和结束时间的和的累积
  详细解决方案

怎么求SQL时间差之和,就是多条记录,开始时间和结束时间的和的累积

热度:105   发布时间:2016-04-24 09:33:04.0
如何求SQL时间差之和,就是多条记录,开始时间和结束时间的和的累积
如何求SQL时间差之和,就是多条记录,开始时间和结束时间的和的累积

用来计算工时的,如下:
表a,有字段:ID,填写日期,开始时间,结束时间
值如下:

1   2014-12-22 10:10:00    09:01   10:05
2   2014-12-22 09:40:00    09:08   09:32
3   2014-12-23 11:10:00    09:43   10:39
4   2014-12-23 14:30:00    14:11   14:25

我做了个存储过程,可以用来计算每一条记录中 开始时间和结束时间的差值:


CREATE PROCEDURE PROC_DealGongShi
(
@starttime datetime,
@endtime datetime

)
AS
BEGIN
--定义小时和分钟
DECLARE @xiaoshi INT
DECLARE @fenzhong int


SET @xiaoshi = DATEDIFF( n , @starttime , @endtime )/60
SET @fenzhong = DATEDIFF( n , @starttime , @endtime )%60

--考虑不跨天数的情况
IF (DATEDIFF( n , @starttime , @endtime )%60>1)
BEGIN
SELECT CONVERT(VARCHAR(10),@xiaoshi) + ':' + CONVERT(VARCHAR(10),@fenzhong) AS '时间'

END

END



单条记录都没问题,我怎么统计多条记录啊?晕了,请各位大大help!

最终要求就是,我选取某一天,那天的工时就计算出来了,按天计算



------解决思路----------------------
SELECT SUM(DATEDIFF(MINUTE,开始时间,结束时间))/60[小时]
,SUM(DATEDIFF(MINUTE,开始时间,结束时间))%60[分钟]
FROM a
WHERE CONVERT(VARCHAR(10),填写日期,120)='2014-12-22'
  相关解决方案