当我输入 dateadd 或 datediff 代码时,我总是收到此错误 "ORA-00904 "DATEADD" INVALID IDENTIFIER."

When I enter a dateadd or datediff code i get this error all the time "ORA-00904 "DATEADD" INVALID IDENTIFIER."

我有一个大学项目,我有一个病人 table 具有入院和出院日期属性。我需要删除超过 7 年的记录,我使用了以下代码:

delete from patient
where dis_date >= datedadd(yy,-7,getdate());

我收到错误

"ORA-00904: "DATEADD" invalid identifier"

。 DATEDIFF 函数也是如此。请问还有其他选择吗?

你可以试试这个:

DELETE FROM patient
  WHERE dis_date  < SYSDATE - INTERVAL '7' YEAR;

Oracle 中没有名为 DATEADD 的函数。

在 Oracle 中执行此操作的典型方法是:

DELETE FROM patient
 WHERE dis_date < TRUNC(ADD_MONTHS(SYSDATE, -7*12));

我建议使用 ADD_MONTHS() 而不是年份间隔的原因是 ADD_MONTHS() 是闰年安全的。