T-SQL自定义函数ConvertSecondsToTime

时间:2021-06-07 18:26:32

MS SQL Server一个自定义函数[dbo].[udf_ConvertSecondToTime],把秒数转换为时间。

传入的值最大为86399,如果大于这个数值,这将会出现异常:

The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value. 

T-SQL自定义函数ConvertSecondsToTimeT-SQL自定义函数ConvertSecondsToTimeudf_ConvertSecondToTime
SET ANSI_NULLS  ON
GO
SET QUOTED_IDENTIFIER  ON
GO
--  =============================================
--
 Author:        Insus.NET
--
 Create date:   2012-03-24
--
 Description:   Convert second to time
--
 =============================================
CREATE  FUNCTION  [ dbo ]. [udf_ ConvertSecondToTime ] 
(
     @Seconds  INTEGER 
)
RETURNS TIME
AS
BEGIN
DECLARE  
     @H  AS  NVARCHAR( 2=  CAST( ROUND( @Seconds  /  36000AS  NVARCHAR),
     @M  AS  NVARCHAR( 2=  CAST( ROUND((( @Seconds  %  3600/  60), 0AS  NVARCHAR),
     @S  AS  NVARCHAR( 2=   CAST( ROUND((( @Seconds  %  3600%  60), 0AS  NVARCHAR)
RETURN  CAST(( @H  +  ' : '  +  @M  +  ' : '  +  @SAS TIME) 
END

 

Example:

SELECT  [ dbo ]. [ udf_ConvertSecondsToTime ]( 477)
SELECT  [ dbo ]. [ udf_ConvertSecondsToTime ]( 86399)

 

Result:

T-SQL自定义函数ConvertSecondsToTime

 

See also:

http://www.cnblogs.com/insus/articles/1937683.html