'10-MAY-20' är inte ett datum, det är ett snöre. Ett datum har inget format, baserat på dina lokalspecifika NLS-inställningar visas det i ett läsbart format med TO_CHAR och rätt formatmask.
Du bör också undvika att använda tvåsiffriga YY representation för år, det är hela anledningen till Y2K buggen startade. Använd alltid YYYY format.
Så här konverterar du en sträng till datum:
Använd TO_DATE och lämplig formatmask:
where date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')
and date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')
Eller använd ANSI date literal som använder fast format 'YYYY-MM-DD' :
where date_col > DATE '2020-05-10' and date < DATE '2020-05-13'
En annan sak, DATE är ett reserverat ord i Oracle kan du se dokumentationen . Du kanske använder citattecken "date" d.v.s. att använda dubbla citattecken runt det reserverade ordet.
Det beror förmodligen på att dina NLS-inställningar för SQL Developer är inställda på 'DD-MON-YY' , så när du passerar datumet i det formatet gör det en implicit konvertering till datum. Men om du ändrar formatet kommer det inte att fungera:
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';