当我输入dateadd或datediff代码时,我总是得到这个错误" ORA-00904" DATEADD" INVALID IDENTIFIER。"

时间:2015-03-19 13:24:56

标签: sql oracle oracle11g sqlplus dateadd

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

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

我收到错误

  

“ORA-00904:”DATEADD“无效标识符”

。它与DATEDIFF功能相同。还有其他选择吗?

2 个答案:

答案 0 :(得分:4)

你可以试试这个:

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

Oracle中没有名为DATEADD的函数。

答案 1 :(得分:3)

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

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

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