DATE jest zarezerwowanym słowem kluczowym w Oracle, więc używam nazwy kolumny your_date zamiast tego.
Jeśli masz indeks na your_date , użyłbym
WHERE your_date >= TO_DATE('2010-08-03', 'YYYY-MM-DD')
AND your_date < TO_DATE('2010-08-04', 'YYYY-MM-DD')
lub 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')
Jeśli nie ma indeksu lub jeśli nie ma zbyt wielu rekordów
WHERE TRUNC(your_date) = TO_DATE('2010-08-03', 'YYYY-MM-DD')
powinno wystarczyć. TRUNC bez parametru usuwa godziny, minuty i sekundy z DATE .
Jeśli wydajność naprawdę ma znaczenie, rozważ umieszczenie Function Based Index w tej kolumnie:
CREATE INDEX trunc_date_idx ON t1(TRUNC(your_date));