Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle SQL converte il formato della data da GG-Lun-AA a AAAAMM

Come offer_date è un numero e ha una precisione inferiore rispetto alle tue date reali, questo potrebbe funzionare...
- Converti la tua data reale in una stringa di formato YYYYMM
- Converti quel valore in un INT
- Confronta il risultato con il tuo 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 

Inoltre, eseguendo tutte le manipolazioni su create_date esegui l'elaborazione solo su un valore.

Inoltre, hai manipolato il offer_date non saresti in grado di utilizzare alcun indice su quel campo, quindi forza SCAN invece di SEEK.