Oracle
 sql >> Database >  >> RDS >> Oracle

Query Oracle SQL per il formato della data

to_date() restituisce una data alle 00:00:00, quindi devi "rimuovere" i minuti dalla data con cui stai confrontando:

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

Probabilmente vuoi creare un indice su trunc(es_date) se è qualcosa che stai facendo regolarmente.

Il letterale '27-APR-12' può fallire molto facilmente se il formato della data predefinito viene modificato in qualcosa di diverso. Quindi assicurati di utilizzare sempre to_date() con una maschera di formato appropriata (o un valore letterale ANSI:date '2012-04-27' )

Anche se hai fatto bene a usare to_date() e non basandosi sulla conversione implicita del tipo di dati, il tuo utilizzo di to_date() ha ancora una sottile trappola a causa del formato 'dd-MON-yy' .

Con un'impostazione di lingua diversa questo potrebbe facilmente fallire, ad es. TO_DATE('27-MAY-12','dd-MON-yy') quando NLS_LANG è impostato su tedesco. Evita qualsiasi cosa nel formato che potrebbe essere diversa in una lingua diversa. Utilizzando un anno a quattro cifre e solo numeri, ad es. 'dd-mm-yyyy' o 'yyyy-mm-dd'