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

Requête SQL Oracle pour le format de date

to_date() renvoie une date à 00:00:00, vous devez donc "supprimer" les minutes de la date à laquelle vous comparez :

select * 
from table
where trunc(es_date) = TO_DATE('27-APR-12','dd-MON-yy')

Vous voulez probablement créer un index sur trunc(es_date) si c'est quelque chose que vous faites régulièrement.

Le littéral '27-APR-12' peut échouer très facilement si le format de date par défaut est changé en quelque chose de différent. Assurez-vous donc de toujours utiliser to_date() avec un masque de format approprié (ou un littéral ANSI :date '2012-04-27' )

Bien que vous ayez bien fait d'utiliser to_date() et ne reposant pas sur la conversion de type de données implicite, votre utilisation de to_date() présente toujours un piège subtil à cause du format 'dd-MON-yy' .

Avec un paramètre de langue différent, cela pourrait facilement échouer, par ex. TO_DATE('27-MAY-12','dd-MON-yy') lorsque NLS_LANG est défini sur allemand. Évitez tout ce qui, dans le format, pourrait être différent dans une autre langue. En utilisant une année à quatre chiffres et uniquement des chiffres, par ex. 'dd-mm-yyyy' ou 'yyyy-mm-dd'