SQL标量值函数——由秒返回时间格式字符串

--  ***********************************************
--  Author            :    
--  Create Date    :
--  Description     :   由秒返回时间格式字符串     
--  ***********************************************
CREATE FUNCTION [dbo].[fun_GetDateStr](@second BIGINT)
RETURNS NVARCHAR(100)
AS
BEGIN

    DECLARE @Result NVARCHAR(100)
    DECLARE @hour INT
    SELECT @hour=0

    DECLARE @minute INT
    SELECT @minute

    DECLARE @seconds INT
    SELECT @seconds=0

    IF(@second>0)
    BEGIN
       --1. 1 计算有多少小时
        SELECT @hour=CONVERT(INT,ROUND(CONVERT(MONEY,@second)/3600,0,1))
     DECLARE @tmp INT
     SELECT @tmp=0
     --1.2 排除小时后还剩余多少秒
     SELECT @tmp=@second-3600*@hour

    --2.1 计算有多少分钟
    SELECT @minute=CONVERT(INT,ROUND(CONVERT(MONEY,@tmp)/60,0,1))
    --2.2 排除分钟后有剩余多少秒
    SELECT @tmp=@tmp-60*@minute
    SELECT @seconds=@tmp
    
    --3.1 
    DECLARE @hourStr NVARCHAR(100)
    SELECT @hourStr=''
    SELECT @hourStr=CASE WHEN @hour>0 
                                         THEN CONVERT(NVARCHAR(100),@hour) + '小时'
                                         ELSE '' END

    DECLARE @minuteStr NVARCHAR(100)
    SELECT @minuteStr=''
    SELECT @minuteStr=CASE WHEN @minute>0 
                                         THEN CONVERT(NVARCHAR(100),@minute) + '分钟'
                                         ELSE '' END

    DECLARE @secondStr NVARCHAR(100)
    SELECT @secondStr=''
    SELECT @secondStr=CASE WHEN @seconds>0 
                                         THEN CONVERT(NVARCHAR(100),@seconds) + ''
                                         ELSE '' END

     SELECT @Result=@hourStr+@minuteStr+@secondStr
    END
    
END 
ELSE
BEGIN
    SELECT @Result=''
END           

 

posted @ 2020-09-12 19:32  tiger_yj  阅读(211)  评论(0编辑  收藏  举报