我有一个计算IP语音会话总数的SQL查询。
SELECT COUNT(*) AS 'Aantal gesprekken'
,FromUri AS 'Medewerker'
,SUM(DATEDIFF(hour,InviteTime,EndTime)) AS 'Uren'
,SUM(DATEDIFF(minute,InviteTime,EndTime)) AS 'Minuten'
,SUM(DATEDIFF(second,InviteTime,EndTime)) AS 'Secondes'
FROM [LcsCDR].[dbo].[SessionDetailsView]
WHERE FromUri LIKE '%robert%'
AND (CAST([InviteTime] AS date)) BETWEEN '2012-12-27' AND '2013-01-28'
AND MediaTypes = '16'
GROUP BY FromUriSQL Server 2012提供以下结果:数字、员工、小时、分钟和秒。
302 robert 11 518 31316但我需要得到这样的结果: 28小时19分56秒。我用reguler / 60的方式进行了计算,但是我怎样才能在SQL中做到这一点才能得到准确的结果呢?
在前进中,非常感谢!
发布于 2013-03-26 16:36:59
在Steoleary的帮助下,我找到了一个解决方案
DECLARE @SecondsToConvert int
SET @SecondsToConvert = (SELECT (SUM(DATEDIFF(hour,InviteTime,EndTime) * 3600) + SUM(DATEDIFF(minute,InviteTime,EndTime) * 60) + SUM(DATEDIFF(second,InviteTime,EndTime) * 1)) AS [Seconds]
FROM [LcsCDR].[dbo].[SessionDetailsView]
WHERE FromUri LIKE '%robert%'
AND (CAST([InviteTime] AS date)) BETWEEN '2012-12-27' AND '2013-01-28'
AND MediaTypes = '16'
GROUP BY FromUri)
-- Declare variables
DECLARE @Hours int
DECLARE @Minutes int
DECLARE @Seconds int
-- Set the calculations for hour, minute and second
SET @Hours = @SecondsToConvert/3600
SET @Minutes = (@SecondsToConvert % 3600) / 60
SET @Seconds = @SecondsToConvert % 60
SELECT COUNT(*) AS 'Aantal gesprekken'
,FromUri AS 'Medewerker'
,@Hours AS 'Uren' ,@Minutes AS 'Minuten' , @Seconds AS 'Seconden'
FROM [LcsCDR].[dbo].[SessionDetailsView]
WHERE FromUri LIKE '%robert%'
AND (CAST([InviteTime] AS date)) BETWEEN '2012-12-27' AND '2013-01-28'
AND MediaTypes = '16'
GROUP BY FromUri结果,我现在得到了准确的时间。
302 robert 28 19 5628小时19分56秒,恰如其分:)
发布于 2013-03-26 16:50:39
Try Like如下查询
SELECT COUNT(*) AS 'Aantal gesprekken',FromUri AS 'Medewerker',
concat(
floor(SUM(DATEDIFF(second,InviteTime,EndTime))/3600),":", //Hrs
floor(SUM(DATEDIFF(second,InviteTime,EndTime))/60)%60,":", //Mins
SUM(DATEDIFF(second,InviteTime,EndTime))%60 //Secs
) as Total_Hrs
FROM [LcsCDR].[dbo].[SessionDetailsView]
WHERE FromUri LIKE '%robert%'
AND (CAST([InviteTime] AS date)) BETWEEN '2012-12-27' AND '2013-01-28'
AND MediaTypes = '16'
GROUP BY FromUrihttps://stackoverflow.com/questions/15616278
复制相似问题