sql >> Database >  >> RDS >> Oracle

Kies uit de tabel door alleen de datum zonder tijd te kennen (ORACLE)

DATE is een gereserveerd trefwoord in Oracle, dus ik gebruik kolomnaam your_date in plaats daarvan.

Als je een index hebt op your_date , ik zou gebruiken

WHERE your_date >= TO_DATE('2010-08-03', 'YYYY-MM-DD')
  AND your_date <  TO_DATE('2010-08-04', 'YYYY-MM-DD')

of BETWEEN :

WHERE your_date BETWEEN TO_DATE('2010-08-03', 'YYYY-MM-DD')
                    AND TO_DATE('2010-08-03 23:59:59', 'YYYY-MM-DD HH24:MI:SS')

Als er geen index is of als er niet te veel records zijn

WHERE TRUNC(your_date) = TO_DATE('2010-08-03', 'YYYY-MM-DD')

zou voldoende moeten zijn. TRUNC zonder parameter verwijdert uren, minuten en seconden van een DATE .

Als prestaties er echt toe doen, overweeg dan om een ​​Function Based Index . te plaatsen in die kolom:

CREATE INDEX trunc_date_idx ON t1(TRUNC(your_date));


  1. Tabel draaien/draaien met aggregatie in Oracle

  2. Overwegingen bij versleuteling van gegevens in rust voor MariaDB

  3. MAAK TABEL INDIEN NIET BESTAAT equivalent in SQL Server

  4. NULL in MySQL (prestaties en opslag)