2016-02-12 2 views
1

У меня возникла задача решить сценарий на основе следующего: Сервер базы данных был сброшен с неправильной датой и временем, без каких-либо знаний. ОБНОВЛЯЙТЕ любую дату заказа на прошлой неделе, чтобы добавить 7 дней.Добавление 7 дней во все строки с датой за последние 7 дней

Уставка хранится в ORDERS.ORDERDATE. Я попытался использовать следующий код, и он не работает:

UPDATE ORDERS 
SET ORDERDATE,DATEADD(day,7,OrderDate) 
WHERE DATEDIFF >= (
    DAY, 
    DATEDIFF(DAY, @ORDERDATE, -7), 
    GETDATE()); 

Может ли кто-нибудь предоставить мне правильный код?

Любая помощь приветствуется!

ответ

1

Вы можете попробовать, может быть, с

Update ORDERS 
    SET ORDERDATE = ORDERDATE + 7 
WHERE SYSDATE - ORDERDATE <= 7; 
+0

В зависимости от объема данных, которые вы собираетесь обновить, вам может потребоваться цикл ожидания и включить промежуточные коммиты –

+0

'ORDERDATE = ORDERDATE + 7' работает только в том случае, если тип данных ORDERDATE равен' DATE'. Для типа данных 'TIMESTAMP' вы должны использовать' INTERVAL'. –

2

Ваш синтаксис является для SQL Server, но помечено вопрос для Oracle. В любом случае, правильный UPDATE запрос в Oracle должен выглядеть примерно так:

UPDATE ORDERS 
    SET ORDERDATE = ORDERDATE + INTERVAL '7' DAY 
    WHERE ORDERDATE > SYSDATE - INTERVAL '7' DAY 

Здесь SYSDATE является DATE объект, представляющий текущую дату и время.

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