2013-04-09 75 views
0

如何在帶有格式化日期的sql server 2005表中插入一條記錄並附加自動遞增數字值?查詢在sql server表中插入一條記錄,如2013040900001

例如,如果今天的日期爲2013-04-09 12:05:44.640那麼我可以使用convert(varchar, getdate(), 112)來對其進行格式化,如20130409

但我想插入一條記錄,如2013040900001,那麼接下來將是2013040900002,2013040900003等等。

+0

您是否將字段插入爲NUMBER或VARCHAR或DATE? – 2013-04-09 06:55:29

+0

其varchar類型 – yatinbc 2013-04-09 06:59:02

+0

通常最好將組件存儲在單獨的列中,並且只有*實際*在輸出/格式化過程中將它們組合在一起。 – 2013-04-09 07:09:14

回答

1

用於產生全系統的自動遞增數A良好的解決方案是通過設計用於所述任務的表:

CREATE TABLE [AutoInc] 
(
    [Number] INT IDENTITY (1,1) NOT NULL, 
    [Col1] CHAR(1) NOT NULL 
); 

然後插入一個值到表,並立即用一個ROLLBACK移除:

BEGIN TRAN; 
INSERT INTO AutoInc VALUES ('A'); 
ROLLBACK TRAN; 

這確保沒有使用空間(表格將始終爲空),但會創建數字(因爲由IDENTITY屬性生成的值不參與事務)。然後,您可以使用SCOPE_IDENTITY()函數獲取遞增值並將其附加到日期:

INSERT INTO yourtable (yourcol) VALUES (convert(varchar, getdate(), 112) + RIGHT('000000000' + CAST(SCOPE_IDENTITY() AS VARCHAR(10)), 10)); 
+0

謝謝..我工作 – yatinbc 2013-04-09 07:45:07

+0

但是,當我截斷表值我去NULL – yatinbc 2013-04-09 08:38:17

+0

是的,沒錯。爲什麼要截斷表格?它總是空的。 – 2013-04-09 09:44:57

相關問題