In Oracle ein DATE hat immer eine Zeitkomponente. Ihr Client zeigt möglicherweise die Zeitkomponente an oder nicht, aber sie ist immer noch vorhanden, wenn Sie versuchen, einen Gleichheitsvergleich durchzuführen. Sie möchten Datumsangaben auch immer mit Datumsangaben statt mit Zeichenfolgen vergleichen, die das NLS_DATE_FORMAT der aktuellen Sitzung verwenden für implizite Konvertierungen, wodurch sie ziemlich zerbrechlich werden. Das beinhaltet entweder ANSI-Datumsliterale oder explizites to_date Anrufe
Sie können den TRUNC verwenden Funktion zum Abschneiden des DATE bis Mitternacht
SELECT *
FROM porder
WHERE trunc(odate) = date '2013-10-04'
Oder Sie können einen Bereichsvergleich durchführen (was effizienter ist, wenn Sie von einem Index auf odate profitieren können )
SELECT *
FROM porder
WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
AND odate < to_date( '05-Oct-2013', 'DD-Mon-YYYY' );