SQL Server中的37:30:55格式

时间:2015-07-12 18:47:34

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

我有一个包含时间值的列。我想计算这一列的总和,并且我知道它将超过24小时的时间格式。

当我尝试它时,我收到一个错误。我希望总和类似于Excel总和,即 37:30:55

请帮助:

<span id="results">

2 个答案:

答案 0 :(得分:1)

DECLARE @Seconds int = 
    37 * (60 * 60) -- Hour
    + 30 * 60 -- Minute
    + 55 -- Second

-- This is h:mm:ss format
SELECT 
    CONVERT(varchar(10), @Seconds / (60 * 60)) + ':' -- Max. 10 precision for hour
    + RIGHT('0' + CONVERT(varchar(2), @Seconds % (60 * 60) / 60), 2) + ':' 
    + RIGHT('0' + CONVERT(varchar(2), @Seconds % 60), 2)

答案 1 :(得分:0)

这是一个小型标量函数,持续时间以秒为单位,并以您要求的格式返回:

create function fmtSeconds (@s int)
returns varchar(10)
as
begin
    declare @h varchar(5), @m varchar(2);
    set @h = @s/(60*60);
    set @s -= @h * 60*60;

    set @m = @s/60;
    set @s -= @m * 60;

    return @h + ':' + @m + ':' + cast(@s as varchar(2));
end
go
--sample call
declare @seconds int = 55 + 30*60 + 37*60*60;
select dbo.fmtSeconds(@seconds);
go

我同意上述评论中的观点,即如果这是您的选择,请将此作为客户方面的关注。