Sql 向所有行添加7天,日期为过去7天

Sql 向所有行添加7天,日期为过去7天,sql,oracle,Sql,Oracle,我负责解决基于以下内容的场景: 数据库服务器被重置为错误的日期和时间,没有人知道。更新过去一周内的任何订单日期以添加7天 Orderdate存储在ORDERS.Orderdate中。我尝试使用以下代码,但失败了: UPDATE ORDERS SET ORDERDATE,DATEADD(day,7,OrderDate) WHERE DATEDIFF >= ( DAY, DATEDIFF(DAY, @ORDERDATE, -7), GETDATE()); 有人

我负责解决基于以下内容的场景: 数据库服务器被重置为错误的日期和时间,没有人知道。更新过去一周内的任何订单日期以添加7天

Orderdate存储在ORDERS.Orderdate中。我尝试使用以下代码,但失败了:

UPDATE ORDERS 
SET  ORDERDATE,DATEADD(day,7,OrderDate)
WHERE DATEDIFF >= (
    DAY, 
    DATEDIFF(DAY, @ORDERDATE, -7), 
    GETDATE());
有人能给我提供正确的代码吗

感谢您的帮助

你可以试试

Update ORDERS
   SET ORDERDATE = ORDERDATE + 7
WHERE SYSDATE - ORDERDATE <= 7;
更新订单
设置ORDERDATE=ORDERDATE+7

其中SYSDATE-ORDERDATE您的语法似乎是针对SQL Server的,但您为Oracle标记了问题。在任何情况下,Oracle中正确的
更新
查询应该如下所示:

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

这里的
SYSDATE
是一个
DATE
对象,表示当前日期和时间。

根据要更新的数据量,您可能需要执行foor循环,并包括中间提交
ORDERDATE=ORDERDATE+7
仅在ORDERDATE的数据类型为
DATE
时才起作用。对于
TIMESTAMP
数据类型,必须使用
INTERVAL