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');