无法获得超过24小时的总时数,例如48小时的hh:mm:ss输出

时间:2013-08-07 15:29:17

标签: sql-server date dateadd

我正在运行查询以查找用户浏览的总时间。每个浏览会话都以秒为单位存储在数据库中,然后我将总秒数相加并将其转换为hh:mm:ss.问题是当我将秒转换为hh:mm:ss时。我希望它显示例如'78:20:00',但我不知道如何让代码完全像这样。当它超过24小时后,hrs列会回到00,因为它进入了一天。

我运行转换时间的查询可以在下面看到:

SELECT Username,
       CONVERT(VARCHAR(12),DATEADD(SECOND,TotalTimeInSeconds,0),108) AS TotalHours
FROM #TotalSessionTime

2 个答案:

答案 0 :(得分:1)

SELECT USERNAME,
       CAST(TotalTimeInSeconds / (60 * 60) AS Varchar) + ':' + 
       CAST(TotalTimeInSeconds % (60 * 60) / 60 AS Varchar) + ':' +
       CAST(TotalTimeInSeconds % (60) AS Varchar)          AS TotalHours
  FROM #TotalSessionTime

如果你想要分钟和秒钟总是两位数,那么你必须留下它们,这将是一个丑陋的例子,但是可以正常工作。

答案 1 :(得分:0)

试试这个......

DECLARE @TimeInSeconds int = 123400;
DECLARE @MyDate datetime;
SELECT  @MyDate = CONVERT( DateTime, DATEADD( SECOND, @TimeInSeconds, 0))
SELECT  CONVERT(CHAR(2), (DAY( @MyDate )-1) * 24 + DATEPART(hour,@MyDate)) + ':' + CONVERT(CHAR(2), DATEPART(minute, @MyDate)) + ':' + CONVERT(CHAR(2), DATEPART(SECOND, @MyDate))

你想要用零填充分钟和秒来确定它的2位数字。