我有一个大学项目,我有一个患者入院和出院日期属性表。我需要删除超过7年的记录,我使用了以下代码:
delete from patient
where dis_date >= datedadd(yy,-7,getdate());
我收到错误
“ORA-00904:”DATEADD“无效标识符”
。它与DATEDIFF功能相同。还有其他选择吗?
答案 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()
是闰年安全的。