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

Seleziona dalla tabella conoscendo solo la data senza ora (ORACLE)

DATE è una parola chiave riservata in Oracle, quindi sto usando column-name your_date invece.

Se hai un indice su your_date , io userei

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

o 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')

Se non c'è un indice o se non ci sono troppi record

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

dovrebbe essere sufficiente. TRUNC senza parametro rimuove ore, minuti e secondi da un DATE .

Se le prestazioni sono davvero importanti, valuta la possibilità di inserire un Function Based Index su quella colonna:

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