'10-MAY-20' is geen datum, het is een string. Een datum heeft geen formaat, op basis van uw landspecifieke NLS-instellingen wordt het weergegeven in een voor mensen leesbaar formaat met behulp van TO_CHAR en juiste formaat masker.
Vermijd ook het gebruik van tweecijferige YY vertegenwoordiging voor het jaar, het is de hele reden Y2K fout begonnen. Gebruik altijd YYYY formaat.
Om een string om te zetten in een datum:
Gebruik TO_DATE en passend formaatmasker:
where date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')
and date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')
Of gebruik ANSI date literal die een vast formaat gebruikt 'YYYY-MM-DD' :
where date_col > DATE '2020-05-10' and date < DATE '2020-05-13'
Nog iets, DATE is een door Oracle gereserveerd woord, kunt u de documentatie . Misschien gebruikt u identifier tussen aanhalingstekens "date" d.w.z. dubbele aanhalingstekens gebruiken rond het gereserveerde woord.
Dat komt waarschijnlijk omdat je NLS-instellingen van SQL Developer zijn ingesteld op 'DD-MON-YY' , dus wanneer u de datum in dat formaat doorgeeft, wordt er impliciet naar de datum geconverteerd. Als u echter het formaat wijzigt, werkt het niet:
alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';