天天看點

T-SQL自定義函數ConvertSecondsToTime

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自定義函數ConvertSecondsToTime
T-SQL自定義函數ConvertSecondsToTime

udf_ConvertSecondToTime

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

-- =============================================

-- 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 / 3600, 0) AS NVARCHAR),

    @M AS NVARCHAR(2) = CAST(ROUND(((@Seconds % 3600) / 60),0) AS NVARCHAR),

    @S AS NVARCHAR(2) =  CAST(ROUND(((@Seconds % 3600) % 60),0) AS NVARCHAR)

RETURN CAST((@H + ':' + @M + ':' + @S) AS TIME) 

END

Example:

SELECT [dbo].[udf_ConvertSecondsToTime](477)

SELECT [dbo].[udf_ConvertSecondsToTime](86399)

Result:

T-SQL自定義函數ConvertSecondsToTime

See also:

繼續閱讀