sql >> Databáze >  >> RDS >> Oracle

Oracle SQL převádí formát data z DD-Po-RR na RRRRMM

Jako offer_date je číslo a má nižší přesnost než vaše skutečná data, může to fungovat...
- Převeďte své skutečné datum na řetězec ve formátu YYYYMM
- Převeďte tuto hodnotu na INT
- Porovnejte výsledek s vaším 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 

Také provedením všech manipulací v create_date provádíte zpracování pouze na jedné hodnotě.

Navíc, jestli jste zmanipulovali offer_date v tomto poli byste nemohli použít žádný index, a tak vynutit SCAN místo hledání.



  1. Jaký je rozdíl mezi int a celým číslem v MySQL 5.0?

  2. Klíčové slovo SEPARATOR nefunguje správně ve vzorci Hibernate

  3. Chci převést dotaz MySQL na PDO?

  4. Filtrovat podle COUNT(*)?