Я работаю в SQL, и у меня есть несколько таблиц в базе данных Oracle, из которых мне нужно получать данные, поэтому я делаю это через связанный сервер. Если я опускаю фильтр даты, запрос работает нормально, но если я применяю фильтр даты, он прерывается.
Этот запрос работает нормально.
select * from openquery([ORCL], 'select sls_value, retailer_cd, tery_cd, inv_dt
from Toc_cust_second_sls_new where cust_cd IN ( ''1-ZUT42P'' )') secSls --- This query works fine
Этот запрос прерывается
select * from openquery([ORCL], 'select sls_value, retailer_cd, tery_cd, inv_dt from Toc_cust_second_sls_new where cust_cd IN ( ''1-ZUT42P'' )
and to_date(inv_dt, ''dd/mm/yyyy'') between to_date(''01/05/2020'', ''dd/mm/yyyy'') and to_date(''31/05/2020'', ''dd/mm/yyyy'')') secSls
Я получаю эту ошибку.
Поставщик OLE DB «OraOLEDB. Oracle» для связанного сервера «ORCL» вернул сообщение «ORA-01861: литерал не соответствует строке формата».
Для фильтрации даты я могу использовать этот запрос, так как он работает нормально.
select * from openquery([ORCL], 'select sls_value, retailer_cd, tery_cd, inv_dt, inv_no, cust_cd from Toc_cust_second_sls_new
where cust_cd IN ( ''1-ZUT42P'' )') secSls
where convert(date,secSls.inv_dt, 101) >= '2020-05-01' and convert(date,secSls.inv_dt, 101) <= '2020-05-31'
Но проблема в приведенном выше запросе заключается в том, что он сначала получает все данные из oracle, а затем фильтрует поэтому существуют сотни, если тысячи записей, что требует много времени.