将十进制小时转换为'hh:mm'格式 - SQL Server

时间:2016-02-16 23:43:46

标签: sql sql-server data-conversion

这更像是一个解决方案,而不是问题。

我看了很多线程,找到了一个很好的解决方案,可以将十进制小时转换为'hh:mm'格式,但只是在这里和那里得到了点点滴滴。我想,如果它对任何人都有用,我会分享我的解决方案。

Mods - 请随意优化/优化我的功能。

1 个答案:

答案 0 :(得分:0)

--this will convert 45.50 to '45:30' or -45.50 to '-45:30'
CREATE FUNCTION [dbo].[GetTimeFromNumericValue](@numerichours numeric(24,6))
RETURNS varchar(6) --Only string takes negative
AS
BEGIN

Declare @returnvalue numeric(24,6) ;
Declare @left varchar(10);
Declare @right varchar(10);

If(@numerichours is NULL OR @numerichours = 0.0 )
Begin
     Return '';
End
Else if (@numerichours<0)
Begin
     set @numerichours = ABS(@numerichours)
     Return '-' + RIGHT('0'+Convert(varchar, FLOOR(@numerichours)),2) +':' +  RIGHT('0'+Convert(varchar,Convert(int,((@numerichours - FLOOR(@numerichours)) * 60))),2)
End
Else
Begin
     Return RIGHT('0'+Convert(varchar, FLOOR(@numerichours)),2) +':' +  RIGHT('0'+Convert(varchar,Convert(int,((@numerichours - FLOOR(@numerichours)) * 60))),2)
End

Return '';

End