【问题标题】:Create column with Year and autoincrement使用年份和自动增量创建列
【发布时间】:2013-12-04 13:29:39
【问题描述】:

我想知道是否可以创建一个带有列的表,该列在前面的年份数自动递增 if(格式:YYYY##):

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

“数字”列的外观如何?有可能吗?

谢谢!

第 2 部分:

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

示例输出:

2013-01

2013-02

2013-03

2014-01

【问题讨论】:

  • 您使用的是哪个 DBMS?
  • Microsoft SQL Server 管理工作室
  • Microsft SQL Server 是数据库管理系统,Microsoft SQL Server Management Studio 是用于与 Microsoft SQL Server 一起工作的工具 :-)

标签: sql-server tsql datetime auto-increment


【解决方案1】:

据我所知,您无法使用自动增量列执行此操作。相反,您可以有一个附加列,其中包含记录的创建日期。然后,当您想要输出具有自动增量的列时,您可以根据您的 especifications 格式化输出。

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

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

希望对你有帮助

【讨论】:

    【解决方案2】:

    您可以使用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 的示例计算字段

    【讨论】:

    • 老兄,这就像我能得到的最佳答案:D 非常感谢你
    • 你能在 ID 上再做一次演员表吗?如果它在每个耶尔之后从 0 开始,那就太棒了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2012-12-23
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 2017-08-25
    相关资源
    最近更新 更多