create table Table1(
DateIdentify CHAR(15),
primary key(DateIdentify)
);
Insert into Table1 (DateIdentify) VALUES('?');
我希望'DateIdentify'看起来如何:(20131002-0001)0001是某种自动增量器,从0001开始,每次插入都上升,而来自CURDATE()的20131002,所以添加CURDATE()+ 4位数。我想知道这是否可能?如果是这样,有人可以指出我正确的方向吗?
编辑:
CREATE TABLE Table1(
IdTable1 int auto_increment NOT NULL,
Date1 datetime,
);
答案 0 :(得分:0)
您必须将日期时间和自动增量字段分开
使用自动增量int字段和日期时间创建这样的表
例如:
CREATE TABLE Table1(
IdTable1 int PRIMARY KEY IDENTITY(1,1) NOT NULL,
Date datetime
)
然后,您不必在IdTable1
中插入任何内容,因为它由于关键字IDENTITY
而自动递增(SQL为您执行自动递增)
注意:我为SQLServer写了这个,如果你使用另一个数据库,代码可以改变一点。 您使用哪一个?
编辑:
你也可以这样做一些插入:
INSERT INTO Table1
(
Date
)
VALUES
(
'2013-10-02'
)
答案 1 :(得分:0)
如果需要解决方案,只有一列具有所需格式的值,您可以创建一个函数:
create function dbo.fn_GetDateIdentify ()
returns varchar(15)
as
begin
declare @DateIdentify varchar(15);
select @DateIdentify =
(select convert (varchar(8),GETDATE (),112) +
'-' +
right ('00000' + cast (
(
(
case when Not exists (select ROW_NUMBER() over( order by (select 1)) from Table1 ) then 1
else (select top 1 ROW_NUMBER() over( order by (select 1)) as currentRownumber from Table1 order by currentRownumber desc) + 1
end
)
)
as varchar(4))
,4));
return @DateIdentify;
end
go;
然后使用insert语句中的函数:
insert into Table1 (DateIdentify)
select dbo.fn_GetDateIdentify();
希望这有帮助!