SQL 无法转换为计算的时间格式 ss 到 HH:MM:SS



我无法将计算的ss转换为hh:mm:ss到时间,即使它被格式化为时间。这是我的查询。这里有解决方法吗?

SELECT RIGHT('0' + CAST(263827 / 3600 AS VARCHAR),2) + ':' + 
       RIGHT('0' + CAST((263827 / 60) % 60 AS VARCHAR),2) + ':' + 
       RIGHT('0' + CAST(263827 % 60 AS VARCHAR),2)  [Released]

我尝试使用CONVERT(time, DATEADD(ms, SUM(aa.Released) * 1000, 0))但没有返回正确的输出。

编辑1:当前输出73:17:07但是当我使用错误显示的CONVERT函数时,我无法将其转换为时间格式

从字符转换日期和/或时间时转换失败 字符串。

如果我要把263827变成小时分秒,我会使用 dateadd

SELECT FORMAT(DATEADD(SECOND, 263827, '1970-01-01'), 'HH:mm:ss')

2012 年之前的 sqlserver 版本没有格式:

SELECT CONVERT(VARCHAR, DATEADD(SECOND, 263827, '1970-01-01'), 8)

我没有特别的原因选择1st jan 1970,任何时间为午夜的日期都可以,但是这个日期是Unix纪元,因此作为一种技术,它可以用来将Unix时间(自1970年1月1日以来的INT64秒数)转换为可用的DATETIME。

请注意,此方法在超过 86400 的秒数内不起作用,因为它在滚动到第二天之前限制为 24 小时。如果需要,您可以格式化以添加"一年中的某一天",例如最多"365d 23:59:59"的持续时间。

要将秒数转换为数百小时,请以数学方式进行:

SELECT CONCAT(263827/3600, FORMAT(DATEADD(SECOND, 263827, '1970-01-01'), ':mm:ss'))

这是我能想到的最简单(最短的代码)方法,无需进行大量划分和修改操作(混乱)

时间数据类型的上限是 23:59:59 ,如果等于或小于 23:59:59,则可以将任何varchar转换为 time

在您的情况下73:17:07超出了time数据类型的限制,因此您将获得转换错误。

最新更新