sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL jämför datum

I Oracle, en DATE har alltid en tidskomponent. Din klient kan eller kanske inte visar tidskomponenten, men den finns fortfarande där när du försöker göra en jämställdhetsjämförelse. Du vill också alltid jämföra datum med datum snarare än strängar som använder den aktuella sessionens NLS_DATE_FORMAT för att göra implicita omvandlingar och därmed göra dem ganska ömtåliga. Det kommer att involvera antingen ANSI-datumbokstav eller explicit to_date samtal

Du kan använda TRUNC funktion för att trunkera DATE till midnatt

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

Eller så kan du göra en intervalljämförelse (vilket blir mer effektivt om du kan dra nytta av ett index på 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. Node.js returnerar resultat från MySQL-fråga

  2. Fältet i datafilen överskrider maximal längd - fel

  3. Ersätta värde inom en kommaavgränsad sträng i MySQL?

  4. Standardschema i Oracle Connection URL