2016-02-12 82 views
1

我負責根據以下內容解決方案的任務: 數據庫服務器在沒有任何人知道的情況下被錯誤的日期和時間重置。更新上週任何訂單日期以添加7天。向過去7天內的所有行添加7天

Orderdate存儲在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

根據您要更新的數據量,您可能需要執行foor循環,幷包含中間提交 –

+0

只有在ORDERDATE的數據類型爲「DATE」時,'ORDERDATE = ORDERDATE + 7'纔有效。對於'TIMESTAMP'數據類型,你必須使用'INTERVAL'。 –

2

你的語法似乎是爲SQL Server,但您標記問題爲Oracle。在任何情況下,正確的UPDATE查詢在甲骨文應該是這個樣子:

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

這裏SYSDATE是代表當前日期和時間的DATE對象。