Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle SQL convertit le format de date de JJ-Lun-AA en AAAAMM

Comme offer_date est un nombre et est moins précis que vos dates réelles, cela peut fonctionner...
- Convertissez votre date réelle en une chaîne au format YYYYMM
- Convertissez cette valeur en INT
- Comparez le résultat avec votre 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 

Aussi, en faisant toutes les manipulations sur le create_date vous n'effectuez le traitement que sur une seule valeur.

De plus, aviez-vous manipulé le offer_date vous ne pourriez pas utiliser d'index sur ce champ, et donc forcer les SCAN au lieu des SEEK.