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
我有一个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