首页 > 解决方案 > 生成序列结果来自:MS SQL 中的当前日期 + (max_number + 1)

问题描述

"max_number" 是连续的最大整数,包括 MS SQL 表中的当前日期

例如:序列号:'2018122210' 包含日期:2018/12/22 和编号:10。

这一天的下一个连续剧是:2018122211,第二天的第一个连续剧是:201812231

标签: sql-server

解决方案


尝试这个

 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)

希望这可以帮助


推荐阅读