T-SQL格式秒为HH:MM:SS时间

时间:2012-11-01 12:34:54

标签: sql tsql time format seconds

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

  

3660

秒将显示为

  

01h 01m 00s

  

1时01分00秒

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

  1. 将所有秒数除以3600以获得时间
  2. 将剩余秒数除以60以获得分钟数
  3. 其余的是秒
  4. 我遇到了以下问题:

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

    2. 使用多个CTE查看我的代码。因此,变量可以声明 仅使用CTE。

    3. 我无法使用标准解决方案因为我会 结果大于一天 - How to convert Seconds to HH:MM:SS using T-SQL

3 个答案:

答案 0 :(得分:11)

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

See this SQLFiddle

答案 1 :(得分:6)

试试这个:

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

将返回HH:MM:SS

示例:

  

46800秒=下午1:00

     

FieldName = 13:00:00

希望这有帮助。

答案 2 :(得分:2)

SELECT cast(seconds/3600 as varchar(6)) +
right(cast(dateadd(second, seconds,0) as time(0)), 6)
FROM <yourtable>