Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle SQL vergleicht Daten

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