sql >> Database >  >> RDS >> Oracle

SQL-query met twee datums

'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';


  1. Hoe gebruik je de NOW()-functie als bovengrens van een bereik?

  2. Gebruikt MySQL index voor het sorteren?

  3. zoek Oracle-database met behulp van php

  4. Kan iemand mij helpen de betekenis van deze php-foutmelding te achterhalen?