【问题标题】:Cannot get hours to total over 24, eg 48 hours in hh:mm:ss output总小时数不能超过 24,例如 hh:mm:ss 输出中的 48 小时
【发布时间】:2013-08-07 15:29:17
【问题描述】:

我正在运行查询以了解用户浏览的总时间。每个浏览会话都以秒为单位存储在数据库中,然后我将总秒数相加并将其转换为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

【问题讨论】:

  • 为什么不把总数作为一个数字返回?

标签: sql-server date dateadd


【解决方案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

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

【讨论】:

    【解决方案2】:

    试试这个...

    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))
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-29
      • 2019-07-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多