Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle SQL comparant les dates

Dans Oracle, une DATE a toujours une composante temporelle. Votre client peut ou non afficher le composant de temps, mais il est toujours là lorsque vous essayez de faire une comparaison d'égalité. Vous souhaitez également toujours comparer les dates avec des dates plutôt qu'avec des chaînes qui utilisent le NLS_DATE_FORMAT de la session en cours pour faire des conversions implicites les rendant ainsi plutôt fragiles. Cela impliquera soit des littéraux de date ANSI, soit des to_date explicites appels

Vous pouvez utiliser le TRUNC fonction pour tronquer la DATE à minuit

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

Ou vous pouvez faire une comparaison de gamme (ce qui sera plus efficace si vous pouvez bénéficier d'un index sur odate )

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