Als offer_date
eine Zahl ist und eine geringere Genauigkeit als Ihre echten Daten hat, könnte dies funktionieren...
- Konvertieren Sie Ihr echtes Datum in eine Zeichenfolge im Format YYYYMM
- Wandeln Sie diesen Wert in einen INT um
- Vergleichen Sie das Ergebnis mit Ihrem 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
Außerdem, indem Sie alle Manipulationen am create_date
vornehmen Sie verarbeiten nur einen Wert.
Außerdem haben Sie das offer_date
manipuliert Sie könnten keinen Index für dieses Feld verwenden und somit SCANs anstelle von SEEKs erzwingen.