Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle SQL converte formato de data de DD-Mon-YY para YYYYMM


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.