我正在尝试将具有正秒和秒的字段转换为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*
答案 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
。