是否有任何棘手的方法来格式化几秒钟,例如小时:分钟:秒。例如,
3660
秒将显示为
01H 01M 00s
或
01:01:00
我知道这样做的标准方式:
- 将3600的所有秒钟分开以获取时间
- 将其余几秒钟分为60,以获取分钟
- 其余的是秒
我遇到了以下问题:
-
我无法创建执行此操作的单独函数。
-
我的代码正在使用多个CTE。因此,可以声明变量仅使用CTE。
- 我无法使用标准解决方案,因为我会有结果比一天大 - 如何使用t -sql 将秒转换为HH:MM:SS
SELECT Seconds,
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 |
---|---|
3660 | 01:01:00 |
3800 | 01:03:20 |
4200 | 01:10:00 |
600 | 00:10:00 |
60 | 00:01:00 |
86400 | 24:00:00 |
86800 | 24:06:40 |
尝试以下:
SELECT CONVERT(TIME(0), DATEADD(SS,***seconds***,0),108) as 'FieldName'
将返回HH:MM:SS
示例:
46800秒= 1:00 pm
fieldname = 13:00:00
希望这会有所帮助。
SELECT cast(seconds/3600 as varchar(6)) +
right(cast(dateadd(second, seconds,0) as time(0)), 6)
FROM <yourtable>