0

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

我运行以转换时间的查询如下所示:

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

2 回答 2

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

如果您希望分钟和秒始终为两位数,则必须保留它们,这将是一个丑陋的例子,但可以正常工作。

于 2013-08-07T15:42:31.833 回答
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))

不过,您需要用零填充分钟和秒以确保它是两位数。

于 2013-08-07T15:51:57.440 回答