Como
offer_date
é um número e tem menor precisão do que suas datas reais, isso pode funcionar...- Converta sua data real para uma string de formato
YYYYMM
- Converta esse valor para um INT
- Compare o resultado com sua
offer_date
SELECT
*
FROM
offers
WHERE
offer_date = (SELECT CAST(to_char(create_date, 'YYYYMM') AS INT) FROM customers where id = '12345678')
AND offer_rate > 0
Além disso, fazendo toda a manipulação no
create_date
você só faz o processamento em um valor. Além disso, você manipulou a
offer_date
você não poderá utilizar nenhum índice nesse campo e, portanto, forçar SCANs em vez de SEEKs.