'10-MAY-20' není datum, je to řetězec. Datum nemá žádný formát, na základě vašeho národního nastavení NLS se zobrazuje ve formátu čitelném pro člověka pomocí TO_CHAR a masku správného formátu.
Také byste se neměli používat dvoumístné YY zastoupení za rok, to je celý důvod Y2K chyba začala. Vždy používejte YYYY formát.
Chcete-li převést řetězec na datum:
Použijte TO_DATE a masku vhodného formátu:
where date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')
and date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')
Nebo použijte ANSI date literal který používá pevný formát 'YYYY-MM-DD' :
where date_col > DATE '2020-05-10' and date < DATE '2020-05-13'
Další věc, DATE je vyhrazené slovo Oracle, můžete si prohlédnout dokumentaci . Možná používáte uvedený identifikátor "date" tj. pomocí dvojitých uvozovek kolem vyhrazeného slova.
Je to pravděpodobně proto, že vaše nastavení NLS SQL Developer je nastaveno na 'DD-MON-YY' , takže když předáte datum v tomto formátu, provede se implicitní převod na datum. Pokud však změníte formát, nebude to fungovat:
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';