SQL 将列的记录秒数转换为 hours:minutes:seconds

SQL Converting column's recorded seconds to hours:minutes:seconds

我有一个table(主),它记录了一组人一天工作的秒数。我正在尝试将这些秒数转换为 hh:mm:ss.

正在尝试使用:

DECLARE @TimeinSecond INT
SET @TimeinSecond = main.column -- Change the seconds

SELECT RIGHT('0' + CAST(@TimeinSecond / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((@TimeinSecond / 60) % 60 AS VARCHAR),2)  + ':' +
RIGHT('0' + CAST(@TimeinSecond % 60 AS VARCHAR),2)

main.column不会在此处注册为需要转换的内容。是否可以选择一个列进行全时转换? (每天工作的秒数因人而异)

在 sql 服务器中将列分配给变量没有任何意义(我假设您正在使用它,因为您已经用 ssms 标记了您的问题)。

看起来您只需要 select 这一列值并对其进行一些计算

select 
    RIGHT('0' + CAST(column / 3600 AS VARCHAR),2) + ':' +
    RIGHT('0' + CAST((column / 60) % 60 AS VARCHAR),2)  + ':' +
    RIGHT('0' + CAST(column % 60 AS VARCHAR),2)
from main

您可以通过以下查询从秒数中获取日期。只需将秒数添加到您的日期,然后将值转换为 varchar 格式,如 'hh:mm:ss'

    ;WITH test_data AS(
    SELECT N'20160113' AS working_date, 3600 AS SECONDS
    UNION ALL
    SELECT N'20160113', 2400
    UNION ALL
    SELECT N'20160113', 1500
    )

SELECT LEFT(CONVERT(VARCHAR, DATEADD(ss, [seconds], working_date), 114), 8) FROM test_data
select * , convert(varchar(20), dateadd(ss, secondsColumn, 0), 108) from main

输出 09:20:34