SQL - CURDATE()+ 4个随机数字(2013-10-02-0001)

时间:2013-10-02 11:32:19

标签: mysql sql date unique

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,

);

2 个答案:

答案 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();

希望这有帮助!