sql >> Database >  >> RDS >> Oracle

Oracle SQL-datums vergelijken

In Oracle, een DATE heeft altijd een tijdscomponent. Uw klant kan de tijdcomponent wel of niet weergeven, maar deze is er nog steeds wanneer u een gelijkheidsvergelijking probeert te maken. U wilt ook altijd datums vergelijken met datums in plaats van strings die de NLS_DATE_FORMAT van de huidige sessie gebruiken om impliciete conversies uit te voeren, waardoor ze nogal kwetsbaar worden. Dat omvat ofwel letterlijke ANSI-datums of expliciete to_date oproepen

U kunt de TRUNC . gebruiken functie om de DATE . af te kappen tot middernacht

SELECT *
  FROM porder
 WHERE trunc(odate) = date '2013-10-04'

Of u kunt een bereikvergelijking doen (wat efficiënter is als u kunt profiteren van een index op odate )

SELECT *
  FROM porder
 WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
   AND odate <  to_date( '05-Oct-2013', 'DD-Mon-YYYY' );



  1. Kan ik gegevens invoegen in een AUTOINCREMENT-veld?

  2. Hoe MAX() te gebruiken voor een subqueryresultaat?

  3. Stel het resultaat van de variabele in vanuit query

  4. PostgreSQL:tabel groeperen en filteren, met voorwaarde voor niet-bestaan