Jako offer_date
to liczba, która ma mniejszą dokładność niż rzeczywiste daty, może to zadziałać...
- Przekonwertuj swoją rzeczywistą datę na ciąg znaków w formacie YYYYMM
- Konwertuj tę wartość na INT
- Porównaj wynik z 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
Ponadto, wykonując wszystkie manipulacje na create_date
przetwarzasz tylko jedną wartość.
Dodatkowo, czy manipulowałeś offer_date
? nie będziesz w stanie wykorzystać żadnego indeksu w tym polu, więc wymuś skanowanie zamiast SEEK.