Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL konvertiert das Datumsformat von TT-Mon-JJ in JJJJMM

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.