Удалить записи за последние 6 месяцев Oracle
Я пытаюсь удалить все записи за последние 6 месяцев в моей таблице для ORACLE.
У меня сейчас
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: изображение в формате даты заканчивается перед преобразованием всей входной строки
Любая помощь будет оценена.
1 ответ
Нет необходимости SUBSTR
, напрямую использовать TO_DATE
в формате.
DELETE FROM t
WHERE TO_DATE (t.DATE_SENT, 'MM/DD/YYYY HH:MI:SS AM') <
ADD_MONTHS (TRUNC (SYSDATE), -6);