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