2013-04-09 77 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

相关问题