ORA-30081: неверный тип данных для арифметики дата / время для указанного ниже запроса

select LASTCHANGEDATE 
from ROH_TRANSFER 
where LASTCHANGEDATE BETWEEN to_char(sysdate,'yyyy/mm/dd') - INTERVAL '10' DAY AND to_char(sysdate,'yyyy/mm/dd');

Для приведенного выше запроса я получаю следующую ошибку:

where LASTCHANGEDATE BETWEEN to_char(sysdate,'yyyy/mm/dd') - INTERVAL '10' DAY AND to_char(sysdate,'yyyy/mm/dd')
                             *
ERROR at line 1:
ORA-30081: invalid data type for datetime/interval arithmetic

Пожалуйста, помогите мне в решении этой проблемы!

Примечание. Вот как выглядит содержимое моего столбца LASTCHANGEDATE:

LASTCHANGEDATE
--------------------------------
2016/11/09 02:10:01.066
2016/11/09 18:08:09.319

2 ответа

Решение

Вероятно, вы хотели сделать это:

select LASTCHANGEDATE from ROH_TRANSFER where LASTCHANGEDATE BETWEEN to_char(sysdate - INTERVAL '10' DAY,'yyyy/mm/dd') AND to_char(sysdate,'yyyy/mm/dd')

Вам не нужно конвертировать DATE в CHAR/VARCHAR перед выполнением арифметических операций или сравнений

Так что постарайтесь:

select LASTCHANGEDATE 
  from ROH_TRANSFER 
 where LASTCHANGEDATE between sysdate - INTERVAL '10' DAY AND sysdate;

Или если вы хотите обрезать текущую дату

select LASTCHANGEDATE 
  from ROH_TRANSFER 
 where LASTCHANGEDATE between trunc(sysdate, 'DDD') - INTERVAL '10' DAY AND trunc(sysdate, 'DDD');
Другие вопросы по тегам