获得每天的日期流水 函数

Posted zengtianli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获得每天的日期流水 函数相关的知识,希望对你有一定的参考价值。

--获得每天的日期流水(20160507001)
CREATE FUNCTION [dbo].[f_GetDateFlowNo]
    (
      ---日期流水(20160507001)
      @dateFlowNo VARCHAR(30) ,
      --流水长度len(0001)
      @noLen BIGINT ,
      @showtype VARCHAR(8) --yymmdd,yyyymmdd,yymm,yyyymm
    )
RETURNS VARCHAR(30)
AS
    BEGIN
        --定义当天字符串
        DECLARE @DateStr VARCHAR(10);
        --定义序号字符串
        DECLARE @No VARCHAR(20);
        --得到序号No字符串
        DECLARE @NoStr VARCHAR(20)= ‘00000000000000000000‘;
        SET @showtype=LOWER(@showtype) ; 
        SET @DateStr = CASE WHEN @showtype = ‘yyyymmdd‘
                            THEN CONVERT(VARCHAR(8), GETDATE(), 112)
                            WHEN @showtype = ‘yymmdd‘
                            THEN CONVERT(VARCHAR(6), GETDATE(), 12)
                            WHEN @showtype = ‘yymm‘
                            THEN CONVERT(VARCHAR(4), GETDATE(), 12)
                            WHEN @showtype = ‘yyyymm‘
                            THEN CONVERT(VARCHAR(6), GETDATE(), 112)
                            ELSE CONVERT(VARCHAR(8), GETDATE(), 112)
                       END
       
        --判断传入的字符串是否为‘‘
        IF ISNULL(@dateFlowNo, ‘‘) = ‘‘
            BEGIN
                SET @dateFlowNo = @DateStr + RIGHT(@NoStr + ‘1‘, @noLen); 
            END;
        ELSE
            BEGIN
                --去到当前序号+1
                SET @No = CAST(CAST(REPLACE(@dateFlowNo, @DateStr, ‘‘) AS BIGINT)
                    + 1 AS VARCHAR(20));
                --判断长度是否超过序号最大字符串(不超过补)
                IF LEN(@No) < @noLen
                    BEGIN
                        SET @No = RIGHT(@NoStr + @No, @noLen);
                    END;
                --返回值赋值                       
                SET @dateFlowNo = @DateStr + @No;
            END;
        RETURN @dateFlowNo;

    END;  

以上是关于获得每天的日期流水 函数的主要内容,如果未能解决你的问题,请参考以下文章

java实现自动生成流水号的方法?

java实现自动生成流水号的方法?

怎么生成流水号

shell脚本怎么获取唯一流水号

生成日期流水号帮助类

通过SQL自动添加流水号