SQL中根據伺服器日期建立單據編號

2021-10-25 13:41:10 字數 1371 閱讀 7701

1、編寫儲存過程,建立單據編號。單據編號組成,4位自定義字元,8位日期,4位序列號。

create procedure sheetid   

as begin

--宣告變數 @maxdate 取單據出庫表中單據編號最大的號,@sysdate 取伺服器當前日期,跟單據編號中的日期作比較。如果@maxdate小於@sysdate,則需要取系統當前日期並且單據編號為0001,開始建立新的單據編號;否則就從@maxsheetid 的4位序列號自動加1。

--@newsheetid 用於儲存新的單據編號用,@maxsheetid用於儲存當日最大單據編號,@oldlist用於儲存當日最大單據編號的後4為序列號並加1。

declare @maxdate datetime    

declare @sysdate datetime

declare @newsheetid varchar(16)

declare @maxsheetid varchar(12)

declare @oldlist varchar(4)

select @maxdate=max(substring(sheetid,5,4)+'-'+substring(sheetid,9,2)+'-'+substring(sheetid,11,2))  from listout   --獲取當前出庫單中最大的單據編號日期並複製給@maxdate

set @sysdate=cast(convert(char(10),getdate(),21) as datetime)    --獲取當前伺服器系統日期並賦值給@sysdate

if(@maxdate<@sysdate)   --判斷當前日期和單據編號的最大日期是否為同一天

begin

set @newsheetid='r00q'+datename(yyyy,getdate())+ datename(mm,getdate())+ datename(dd,getdate())+'0001'    --如果最大日期小於系統日期,則用系統日期建立第一張單據編號。

endelse    --如果單據最大日期不小於系統日期,則以單據日期末尾加1為單據編號

begin 

select @maxsheetid=max(substring(sheetid,5,12)) from listout     --獲取當前出庫單中的最大單據編號

set @oldlist=right(@maxsheetid,4)+1      --取最大單據編號的後4位並加1

set @newsheetid='r00q'+substring(@maxsheetid,1,8)+@oldlist    --拼接單據編號,4位自定義字元我用的是r00q

end 

print @newsheetid   --輸出新的單據編號並顯示出來

end

SQL建立鏈結伺服器

兩個 sql2005 怎麼建立鏈結伺服器!這個是2000的,估計差不多.不同伺服器資料庫之間的資料操作 建立鏈結伺服器 exec sp addlinkedserver itsv sqloledb 遠端伺服器名或ip位址 exec sp addlinkedsrvlogin itsv false nul...

用SQL語句獲得伺服器系統日期

sky 2008 6 23 時間的計算 今天 select getdate 昨天 select getdate 1 本週第一天 select dateadd dd,datepart dw,getdate 1,getdate 本週最後一天 select dateadd dd,datepart dw,g...

Linux中建立FTP伺服器

大概步驟 1 使用常用的linuxftp伺服器vsftp,先安裝,檢視可以使用以下命令 chkconfig list grep vsftpd2 配置ftp伺服器 先檢視對於的配置檔案大概有這些 root localhost rpms find etc type f name vsftpd.print...