Som offer_date
är ett tal och är av lägre noggrannhet än dina riktiga datum, kan detta fungera...
- Konvertera ditt riktiga datum till en sträng med formatet YYYYMM
- Konvertera det värdet till ett INT
- Jämför resultatet med ditt 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
Dessutom genom att göra all manipulation på create_date
du gör bara bearbetningen på ett värde.
Hade du dessutom manipulerat offer_date
du skulle inte kunna använda något index på det fältet, och så tvinga fram SCANs istället för SEEKs.