sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL konverterer datoformat fra DD-man-ÅÅ til ÅÅÅÅMM

Som offer_date er et tal og er af lavere nøjagtighed end dine rigtige datoer, kan dette virke...
- Konverter din rigtige dato til en streng med formatet YYYYMM
- Konverter denne værdi til en INT
- Sammenlign resultatet med din 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 

Også ved at udføre al manipulation på create_date du udfører kun behandlingen på én værdi.

Havde du desuden manipuleret offer_date du ville ikke være i stand til at bruge noget indeks på det felt, og så tvinge SCAN'er i stedet for SEEK'er.



  1. Migrer fra MySQL til PostgreSQL på Linux (Kubuntu)

  2. SQL-forespørgsel for at få distinkte værdier for alle kolonneværdier i en tabel

  3. Hvordan tilføjer jeg streng med automatisk stigningsværdi i SQL Server?

  4. Opret en database i SQL Server 2017