7

是否有任何棘手的方法来格式化秒,如小时:分钟:秒。例如,

3660

秒将显示为

01h 01m 00s

或者

01:01:00

我知道这样做的标准方法:

  1. 将所有秒除以 3600 得到小时
  2. 将剩下的秒数除以 60 得到分钟
  3. 剩下的就是秒

我遇到了以下问题:

  1. 我无法创建执行此操作的单独函数。

  2. 我的代码使用了几个 CTE。因此,只能使用 CTE 声明变量。

  3. 我无法使用标准解决方案,因为我的结果会比一天大 -如何使用 T-SQL 将秒转换为 HH:MM:SS
4

3 回答 3

15
SELECT RIGHT('00'+CONVERT(VARCHAR(10),Seconds/3600),2)  
    +':' 
    + RIGHT('00'+CONVERT(VARCHAR(2),(Seconds%3600)/60),2) 
    +':' 
    + RIGHT('00'+CONVERT(VARCHAR(2),Seconds%60),2) AS [HH:MM:SS] 
FROM table1

结果:

HH:MM:SS
01:01:00
01:03:20
01:10:00
00:10:00
00:01:00
00:00:30
24:00:00
24:06:40

看到这个 SQLFiddle

于 2012-11-01T12:39:57.063 回答
8

试试这个:

SELECT CONVERT(TIME(0), DATEADD(SS,***seconds***,0),108) as 'FieldName'

将返回HH:MM:SS

例子:

46800 秒 = 下午 1:00

字段名 = 13:00:00

希望这可以帮助。

于 2015-01-09T20:33:35.280 回答
3
SELECT cast(seconds/3600 as varchar(6)) +
right(cast(dateadd(second, seconds,0) as time(0)), 6)
FROM <yourtable>
于 2012-11-01T14:31:25.737 回答