sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL konverterar datumformat från DD-mån-ÅÅ till ÅÅÅÅMM

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.



  1. Nytt fel i vårstart 2.3.0.RELEASE:UnsatisfiedDependencyException för Oracle 12.2.0.1 jdbcdriver men inte med mysql jdbcdriver

  2. MYSQL - välj de fyra första posterna för varje kategori i en tabell

  3. Visar användarnamn och användar-id från $_SESSION

  4. Oracle UTL_SMTP:Skicka e-post med bilaga Exempel med Oracle Wallet-autentisering