我有一张表(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不会注册为需要转换的内容。可以选择列进行全时转换吗? (每天工作的秒数对每个人都不同)
答案 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