'10-MAY-20' non è una data, è una stringa. Una data non ha alcun formato, in base alle impostazioni NLS specifiche per la tua locale viene visualizzata in un formato leggibile usando TO_CHAR e maschera di formato corretto.
Inoltre, dovresti evitare di usare YY a due cifre rappresentazione per l'anno, è l'intero motivo Y2K bug iniziato. Usa sempre YYYY formato.
Per convertire una stringa in data:
Usa TO_DATE e maschera di formato appropriato:
where date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')
and date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')
Oppure, usa ANSI date literal che utilizza il formato fisso 'YYYY-MM-DD' :
where date_col > DATE '2020-05-10' and date < DATE '2020-05-13'
Un'altra cosa, DATE è una parola riservata Oracle, puoi vedere la documentazione . Forse stai utilizzando identificatore tra virgolette "date" ovvero utilizzando le virgolette doppie attorno alla parola riservata.
Ciò è probabilmente dovuto al fatto che le impostazioni NLS di SQL Developer sono impostate su 'DD-MON-YY' , quindi quando passi la data in quel formato, viene eseguita una conversione implicita alla data. Tuttavia, se cambi il formato non funzionerà:
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';