0
create table Table1(

DateIdentify CHAR(15),
primary key(DateIdentify)

);

Insert into Table1 (DateIdentify) VALUES('?');

我希望“DateIdentify”看起来如何:(20131002-0001),其中 0001 是某种自动增量器,从 0001 开始,每次插入都会上升,20131002 来自 CURDATE(),因此添加 CURDATE() + 4 位数字。我想知道这是否可能?如果是这样,谁能指出我正确的方向?

编辑:

CREATE TABLE Table1(

  IdTable1  int auto_increment NOT NULL,
  Date1 datetime,

);
4

2 回答 2

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 into Table1 (DateIdentify) 
 select dbo.fn_GetDateIdentify();

希望这可以帮助!

于 2013-10-02T12:46:38.220 回答
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'
)
于 2013-10-02T11:45:48.937 回答