Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle SQL konwertuje format daty z DD-Mon-RR na RRRRMM

Jako offer_date to liczba, która ma mniejszą dokładność niż rzeczywiste daty, może to zadziałać...
- Przekonwertuj swoją rzeczywistą datę na ciąg znaków w formacie YYYYMM
- Konwertuj tę wartość na INT
- Porównaj wynik z 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 

Ponadto, wykonując wszystkie manipulacje na create_date przetwarzasz tylko jedną wartość.

Dodatkowo, czy manipulowałeś offer_date? nie będziesz w stanie wykorzystać żadnego indeksu w tym polu, więc wymuś skanowanie zamiast SEEK.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. podając poprawną nazwę użytkownika i hasło, pobierz ORA-01017:nieprawidłowa nazwa użytkownika/hasło; Logowanie odrzucone

  2. Ikony programistów SQL

  3. Projektowanie bazy danych i modelowanie określonych relacji

  4. Porównywanie dat w Oracle SQL

  5. Dlaczego w tym zapytaniu nie jest używany indeks?