Увеличение поля даты и времени с оператором обновления - PullRequest
4 голосов
/ 20 апреля 2011

Итак, у меня есть таблица, которая содержит несколько полей даты и времени, и мне нужно увеличивать каждую дату на 1 день, когда я опускаюсь по списку.Таким образом, даты, как они существуют, будут:

2011-04-19
2011-04-19
2011-04-19
2011-04-19

И мне нужно выполнить инструкцию, чтобы они выглядели так:

2011-04-19
2011-04-20
2011-04-21
2011-04-22

Таким образом, первая строка остается прежнейвторая строка добавляет день, третья - 2 дня, четвертая - 3 дня и т. д.

Я искал, но не могу понять, что делать.Я бы предпочел не использовать курсор, поэтому, если у кого-то есть какой-либо совет, он будет очень признателен.Спасибо!

1 Ответ

3 голосов
/ 20 апреля 2011

Вы можете использовать переменные сеанса:

SET @r := -1;

UPDATE  mytable
SET     mydate = mydate + INTERVAL (@r := @r + 1) DAY;

В SQL Server 2005:

WITH    q AS
        (
        SELECT  *,
                ROW_NUMBER() OVER (ORDER BY mydate) rn
        FROM    mytable
        )
UPDATE  q
SET     mydate = DATEADD(d, rn - 1, mydate)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...