SQL server的总分钟数
大家好, 我的小问题是这样的: 我有以下几列:电话号码,时间(时间域),意思是呼叫电话号码和呼叫持续时间。我需要将电话号码分组并计算分钟数。菲尔兹看起来像这样:SQL server的总分钟数,sql,sql-server,time,sum,Sql,Sql Server,Time,Sum,大家好, 我的小问题是这样的: 我有以下几列:电话号码,时间(时间域),意思是呼叫电话号码和呼叫持续时间。我需要将电话号码分组并计算分钟数。菲尔兹看起来像这样: nr time 726028xxx 00:07:07 735560css 00:07:37 726028xxx 00:07:55 据我所知,这应该适用于SQL ServerDATETIME和2008TIME数据类型 例如: DECLARE @tbl TABLE ( phone_nr varchar(
nr time
726028xxx 00:07:07
735560css 00:07:37
726028xxx 00:07:55
据我所知,这应该适用于SQL ServerDATETIME
和2008TIME
数据类型
例如:
DECLARE @tbl TABLE
(
phone_nr varchar(10),
call_time TIME
);
INSERT INTO @tbl VALUES ('726028xxx', '00:07:07');
INSERT INTO @tbl VALUES ('735560css', '00:07:37');
INSERT INTO @tbl VALUES ('726028xxx', '00:07:55');
SELECT phone_nr, SUM(DATEPART(minute, call_time)) AS total_call_time FROM @tbl GROUP BY phone_nr;
结果:
phone_nr | minutes
726028xxx | 14
735560css | 7
编辑:
此版本与上述版本相同,只是它还考虑了秒和小时(例如1小时7分钟7秒=67.117分钟),因此更准确
SELECT
phone_nr,
SUM(CAST(DATEPART(second, call_time) + (DATEPART(minute, call_time) * 60) + (DATEPART(hour, call_time) * 3600) AS decimal) / 60) AS total_call_time
FROM
@tbl
GROUP BY
phone_nr;
如果第一条记录是01:07:07
,则结果如下
phone_nr | minutes
726028xxx | 75.033332
735560css | 7.616666
您可以使用DATEDIFF获取自时间“零”以来经过的总分钟数
如果通话持续时间超过一小时,这会继续工作吗?@Robin-需要编辑才能包含小时部分-我刚刚将其编辑到我的答案中@罗宾,我刚刚再次编辑了我的答案,所以它也可以工作几个小时。如果你的问题解决了,你应该将答案标记为已接受。
phone_nr | minutes
726028xxx | 75.033332
735560css | 7.616666
SELECT
[PHONE_NR],
SUM(DATEDIFF(minute, '00:00:00', [TIME]))
FROM
[YourTable]
GROUP BY
[PHONE_NR]
declare @v1 varchar(50)
declare @v2 varchar(50)
set @v1='03:10'
set @v2='01:50'
--select cast(left(v1,2) as int) + cast(left(v2,2)as int)
select
cast(
cast(left(@v1,2) as int) + cast(left(@v2,2)as int)
+(cast(right(@v1,2) as int) + cast(right(@v2,2) as int))/60 as varchar)
+':'+cast(( cast(right(@v1,2) as int) + cast(right(@v2,2) as int))%60 as varchar)