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

got*_*tqn 5 sql t-sql format time seconds

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

3660

秒将显示为

01h 01m 00s

要么

1时01分00秒

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

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

我遇到了以下问题:

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

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

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

him*_*056 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
Run Code Online (Sandbox Code Playgroud)

看到这个SQLFiddle


小智 6

试试这个:

SELECT CONVERT(TIME(0), DATEADD(SS,***seconds***,0),108) as 'FieldName'
Run Code Online (Sandbox Code Playgroud)

将返回 HH:MM:SS

例:

46800秒=下午1:00

FieldName = 13:00:00

希望这可以帮助.

  • 请注意,TIME 数据类型不支持大于 86,399 的值,因此这不适用于时间可能反映超过 24 小时的原始意图。 (2认同)