首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL将秒转换为分钟再转换为小时

SQL将秒转换为分钟再转换为小时
EN

Stack Overflow用户
提问于 2013-03-25 21:34:19
回答 2查看 7.4K关注 0票数 0

我有一个计算IP语音会话总数的SQL查询。

代码语言:javascript
复制
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 FromUri

SQL Server 2012提供以下结果:数字、员工、小时、分钟和秒。

代码语言:javascript
复制
302 robert  11  518 31316

但我需要得到这样的结果: 28小时19分56秒。我用reguler / 60的方式进行了计算,但是我怎样才能在SQL中做到这一点才能得到准确的结果呢?

在前进中,非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-26 16:36:59

在Steoleary的帮助下,我找到了一个解决方案

代码语言:javascript
复制
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

结果,我现在得到了准确的时间。

代码语言:javascript
复制
302 robert  28  19  56

28小时19分56秒,恰如其分:)

票数 0
EN

Stack Overflow用户

发布于 2013-03-26 16:50:39

Try Like如下查询

代码语言:javascript
复制
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 FromUri
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15616278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档