2013-11-20 3 views
2

я хочу знать, если это возможно, чтобы создать таблицу с колонкой который получил автоинкрементного с номером года перед, если (Формат: YYYY ##):Создать столбец с года и Autoincrement

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

Как выглядит номер столбца? возможно ли это?

спасибо!

Часть 2:

число за год должен начинаться с 0 после того, как каждый год.

Пример вывода:

2013-01

2013-02

2013-03

2014-01

+0

Какая СУБД вы используете? –

+0

Microsoft SQL Server Management Studio –

+1

Microsft SQL Server - это система управления базой данных, Microsoft SQL Server Management Studio - это инструмент, используемый для работы с Microsoft SQL Server :-) –

ответ

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 является базой autoincremented поле
  • DateField является DateTime часть с текущей датой по умолчанию
  • DateIDChar - пример вычисляется поле в формате varchar
  • DateIDId а - например, вычисленного поле отформатировано как int
+0

Чувак, это лучший ответ, который я мог бы получить: D Спасибо u очень много –

+1

можете ли вы сделать еще один листинг на ID? было бы здорово, если бы оно начиналось с 0 после каждого дара –

1

Насколько я знаю, вы не можете сделать это с колонка автоинкремента. Вместо этого вы можете добавить дополнительный столбец со дня создания записи. Затем, когда вы хотите вывести столбец с помощью автоинкремента, вы можете форматировать вывод в соответствии с вашими спецификациями.

т.е.

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

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

Надеется, что это помогает

Смежные вопросы