2016-06-21 180 views
0

我怎么能以这种格式创建一个自定义自动生成的ID:自定义自动生成的ID

yyyymmdd-xxxxx 

其中:

  • yyyymmdd是当前日期和
  • xxxxx是从0开始自动递增整数0

第二天xxxxx应重新启动0

感谢

+0

你有另一列存储自动增量整数 – Shyju

+4

重复:http://stackoverflow.com/q/27845180/864696 –

+0

看看使用'序列',如果你需要'xxxxx'重新开始每个新的日期。 –

回答

1
  • 在你的数据库
  • 保存每个插入行的日期/时间创建一个autonumeric ID列。

,如果你想保存这在分贝然后用ROW_NUMBER()功能

SELECT *, 
     dayField + '-' + CAST(rn AS VARCHAR(100)) 
FROM (
     SELECT ID, dateTimeField, 
       -- truncate the time and convert to yyyymmdd 
       CONVERT(VARCHAR(10), cast(dateField As Date), 112) as dayField,   
       ROW_NUMBER() OVER (PARITION BY cast(dateField As Date) 
            ORDER BY dateTimeField) as rn 
            -- or just ORDER BY ID 
    ) T 

现在,你可能会需要一个触发。

+1

请注意,这会生成连续的数字,例如,如果您想将其用于报告。但是如果你想用它作为FK。你** CANT **使用它,因为会因任何删除而中断。 –

0

您可能会考虑添加将在插入时设置的Identity列和日期时间列,并添加计算列以将两者放在一起。