Обновить таблицу с автоматически увеличивающимися датами в столбце даты - PullRequest
4 голосов
/ 24 июля 2010

Я хочу обновить таблицу с автоматически увеличивающимися датами в столбце даты в Sql server 2005.

1 Ответ

5 голосов
/ 24 июля 2010

Чтобы пометить вновь вставленные строки, вы можете объединить столбец identity с вычисляемым полем.Например:

declare @t table 
(
     dayNumber int identity, 
     Date as dateadd(day, dayNumber-1, '1970-01-01')
)

insert into @t default values
insert into @t default values
insert into @t default values

select * from @t

Это печатает:

dayNumber  Date
1          1970-01-01 00:00:00.000
2          1970-01-02 00:00:00.000
3          1970-01-03 00:00:00.000

Чтобы обновить столбцы в существующей таблице с увеличением дат, используйте row_number, например:

declare @t2 table (id int identity, name varchar(50), DateColumn datetime)

insert @t2 (name) values ('Maggie'), ('Tom'), ('Phillip'), ('Stephen')

update  t2 
set     DateColumn = DATEADD(day, rn-1, '1970-01-01')
from    @t2 t2
join    (
        select  ROW_NUMBER() over (order by id) rn
        ,       id
        from    @t2 
        ) t2_numbered
on      t2_numbered.id = t2.id

select * from @t2

Это печатает:

id  name     DateColumn
1   Maggie   1970-01-01 00:00:00.000
2   Tom      1970-01-02 00:00:00.000
3   Phillip  1970-01-03 00:00:00.000
4   Stephen  1970-01-04 00:00:00.000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...