生成流水号码

      在程序设计中,尤其是针对企业应用的开发,不可以避免的会要生成大量的编号,比如订单编号、入库编号等。现在利用SQL的存储过程可以方便的实现自动编号,可以大大的提高程序的复用和减少代码的编写。

        主要是利用SQL中的CONVERT函数来对日期进行格式化。
        比如要做这样的一个编号结构:
        标识(2位)           日期时间(14位)            流水号(4位)
         BH                             20070227160954               1001

        程序代码如下:   

       
DECLARE   @myval   nvarchar ( 20 ),
 
@maxval   nvarchar ( 4 )

select   @maxval = max ( right (InEquipNum, 4 )) + 1   from  InEquip  --InEquipNum 为编号字段,取最后4位并加1

set   @myval = CONVERT ( varchar ( 12 ),  getdate (), 112 ) +           --取日期组合
(
substring ( convert ( varchar ( 20 ), getdate (), 120 ), 12 , 2 ))  +        --取小时
(
substring ( convert ( varchar ( 20 ), getdate (), 120 ), 15 , 2 ))  +        --取分钟
(
substring ( convert ( varchar ( 12 ), getdate (), 108 ), 7 , 2 ))  +           --取秒
(
select   case   
    
when   @maxval   is   null   then   ' 1000 '                                           --如果编号为空,则先给出一个值
    
else   @maxval
    
end
)

select   @myval  编号

       运行后结果如:BH200702271609541001

       附CONVERT函数使用说明:
       使用 CONVERT:
CONVERT (data_type[(length)], expression [, style])

select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),/'-/',/'/'),/' /',/'/'),/':/',/'/')
20040912110608
select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12
select CONVERT(varchar(12) , getdate(), 112 )
20040912
select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12
select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004
select CONVERT(varchar(12) , getdate(), 108 )
11:06:08  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值