У меня есть несколько сложный SQL-запрос, который извлекается из таблицы счетов-фактур. В запрашиваемой таблице используются три числовых поля для создания даты (одно для дня, месяца и года).
В этом запросе используется комбинация вызовов функций concat внутри функции TO_DATE. В части запроса SELECT проблем нет, но когда я использую идентичный оператор в предложении WHERE, я получаю сообщение «ORA-01858: нечисловой символ был найден там, где ожидалось числовое», которое относится к первому использование concat внутри TO_DATE в предложении WHERE.
Итак, чем отличается использование concat и TO_DATE в предложении where?
Например, следующая часть WHERE вызывает ошибку нечислового символа.
to_date(
concat(invoice_year,
concat('-',
concat(invoice_month,
concat('-',invoice_day)))),'YYYY-MM-DD')
> add_months(sysdate,-6)
но этот оператор в select отлично оценивает
to_date(
concat(invoice_year,
concat('-',
concat(invoice_month,
concat('-',invoice_day)))),'YYYY-MM-DD') as invoice_date