sql-server - 生成序列结果来自: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)
希望这可以帮助
推荐阅读
- python - Airflow 1.9.0 无法对任务进行排队
- regex - 如何替换所有电子邮件的域名
- c++ - 迷失在指针的世界中
- mysql - 尝试优化执行时间较长的查询
- java - 在java中使用反射面临的问题
- vba - 显示上次用户在 vba 中打开共享工作簿的时间
- amazon-web-services - 如何处理 SQS + Lambda 中的消费者执行错误?
- dart - Flutter 调用 showTimePicker 函数导致错误:在 null 上调用了 getter 'modalBarrierDismissLabel'
- linux - 如何在unix中分配命令的输出
- ssl - Certify The Web - CheckDNS 错误解析 DnsSecRecursiveDdnsResolver?