使用Year和autoincrement创建列

时间:2013-11-20 13:57:38

标签: sql-server tsql datetime auto-increment

我想知道是否可以创建一个带有一个列的表,如果(格式:YYYY ##)得到一个自动增量的年份编号:

CRATE TABLE "Example"(
[Number] autoincrement(YYYY##),
[Text] nvarchar(30)
) 

列'数'看起来怎么样?它甚至可能吗?

谢谢!

第2部分:

一年后的数字应该从每年的0开始。

示例输出:

2013-01

2013-02

2013-03

2014-01

2 个答案:

答案 0 :(得分:5)

您可以使用Computed Columns

例如:

 CREATE TABLE T 
    (
        ID int IDENTITY (1,1) NOT NULL, 
        DateField datetime DEFAULT (getdate()),
        DateIDChar AS CAST(YEAR(DateField) AS Varchar)+'-'+CAST(ID as VARCHAR),
        DateIDInt AS YEAR(DateField) * 10000+ID,
        SampleField varchar(100)
    );

SQLFiddle demo

下面:

  • ID是基础自动增量字段
  • DateField是一个DateTime部分,默认为当前日期
  • DateIDChar - 示例计算字段格式为varchar
  • DateIDId - 示例计算字段格式为int

答案 1 :(得分:1)

据我所知,你不能用自动增量列来做到这一点。相反,您可以在创建记录的当天有一个额外的列。然后,当您想要使用自动增量输出列时,可以根据您的预期格式化输出。

CREATE TABLE "Example" (
[Number] autoincrement(YYYY##),
[Text] nvarchar(30),
[CreatedDate] datetime
) 

-- output
select convert(varchar(4), year(CreatedDate)) + convert(varchar, Number)

希望这有帮助