SQL转换列的秒数记录为小时:分钟:秒

时间:2016-01-14 13:56:59

标签: sql sql-server ssms

我有一张表(Main),它记录了一天中为人员列表工作的秒数。我试图将这些秒转换为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不会注册为需要转换的内容。可以选择列进行全时转换吗? (每天工作的秒数对每个人都不同)

3 个答案:

答案 0 :(得分:3)

select * , convert(varchar(20), dateadd(ss, secondsColumn, 0), 108) from main

输出 的 9时20分34秒

答案 1 :(得分:2)

在sql server中将列赋值给变量是没有意义的(我假设您正在使用它,因为您已使用ssms标记了您的问题。)

看起来您只需选择此列值并对其进行一些计算

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

答案 2 :(得分:0)

您可以通过以下查询从秒获取日期。只需在日期中添加秒数,然后将值转换为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