如何将负秒转换为HH:MM:SS

时间:2016-03-22 14:58:01

标签: sql sql-server sql-server-2008

我正在尝试将具有正秒和秒的字段转换为HH:MM:SS但在此过程中失败。

CONVERT(VARCHAR(6), RPAYCODE.TIMEINSECONDS/3600) +
':' + 
RIGHT('0' + CONVERT(VARCHAR(2), (RPAYCODE.TIMEINSECONDS % 3600) / 60), 2)   
AS "Pay Code Hrs"

当秒数为正时,它可以正常工作= 00:30:00

如果秒数为负数,我会得到= 0:0*

2 个答案:

答案 0 :(得分:2)

这应该处理负值:

CASE
    WHEN @time_in_seconds < 0 THEN '-'
    ELSE ''
END +
CONVERT(VARCHAR(6), ABS(RPAYCODE.TIMEINSECONDS)/3600) + ':' +
RIGHT('0' + CONVERT(VARCHAR(2), (ABS(RPAYCODE.TIMEINSECONDS) % 3600)/60), 2) AS [Pay Code Hrs]

答案 1 :(得分:2)

精益和简单的转换

跳过所有不必要的计算和字符串操作:

 
CASE WHEN RPAYCODE.TIMEINSECONDS < 0 THEN '-' ELSE '' END  -- sign
+ CONVERT(varchar, DATEADD(s, ABS(RPAYCODE.TIMEINSECONDS), 0), 108) -- hh:mm:ss

数字格式 108 hh:mm:ss