2016-06-21 265 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列和日期時間列,並添加計算列以將兩者放在一起。