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.