我正在尝试删除ORACLE表格中过去6个月的所有记录。
我目前有
delete from table t
where to_date(substr(t.DATE_SENT,1,10),'MM/DD/YYYY') < add_months(trunc(sysdate), -6);
此表格中的字符串格式为'12/21/2015 12:00:00 AM'
。
注意我明白这应该是DATETIME而不是varchar2,但它恰好是一个varchar2,所以我现在试图找到一个解决它的工作。
此查询似乎在某种程度上适用于select *但随后崩溃了SQL
错误:ORA-01830:日期格式图片在转换整个输入字符串之前结束
任何帮助将不胜感激。
答案 0 :(得分:3)
不需要SUBSTR
。直接在格式上使用TO_DATE
。
DELETE FROM t
WHERE TO_DATE (t.DATE_SENT, 'MM/DD/YYYY HH:MI:SS AM') <
ADD_MONTHS (TRUNC (SYSDATE), -6);