生成序列号结果:MS SQL中的当前日期+(max_number+ 1)



>"max_number"是 MS SQL 表中包含当前日期的序列号中的最大整数

例如:序列号:"2018122210"由日期:2018/12/22 和数字:10 组成。

这一天的下一个系列将是:2018122211第二天的第一个系列将是:201812231

试试这个

 DECLARE @T TABLE
(
    MaxNum VARCHAR(20)
)
;WITH CTE
AS
(
    SELECT
        MySeq = 1,
        MyDate = FORMAT(GETDATE(),'yyyyMMdd'),
        MaxNum = FORMAT(GETDATE(),'yyyyMMdd')+'01'
    UNION ALL
    SELECT
        MySeq = MySeq +1,
        MyDate = FORMAT(GETDATE(),'yyyyMMdd'),
        MaxNum = MyDate+RIGHT('00'+CAST(MySeq+1 AS VARCHAR(10)),2)
        FROM CTE
            WHERE MySeq < DAY(EOMONTH(GETDATE()))
)
INSERT INTO @T
SELECT
    MaxNum
    FROM CTE
SELECT
    MaxId = FORMAT(GETDATE(),'yyyyMMdd')+
                RIGHT('00'+CAST(
                MAX(CAST(REPLACE(MaxNum,FORMAT(GETDATE(),'yyyyMMdd'),'') AS INT))+1
                AS VARCHAR(10)),2)
    FROM @T
        WHERE FORMAT(GETDATE(),'yyyyMMdd') = LEFT(MaxNum,8)

希望这有帮助

最新更新