En dato har ikke et format - den er lagret internt i databasen som 7-bytes (repræsenterer år, måned, dag, time, minut og sekund), og det er ikke før hvilken brugergrænseflade du bruger (dvs. SQL/Plus, SQL Developer, Java osv.) forsøger at vise den til dig, brugeren, og konverterer det til noget, du ville finde meningsfuldt (normalt en streng), at datoen har et format.
For at rette din forespørgsel skal du blot omgive datostrengen i enkelte anførselstegn og bruge YY
for at matche det 2-cifrede årstal (ellers vil Oracle antage, at 17
i formatet YYYY
er året 0017
og århundredet bliver ikke, som du forventer
):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between TO_DATE('01-APR-17', 'DD-MON-YY')
AND TO_DATE('31-MAR-17', 'DD-MON-YY');
Du kan dog også bruge bogstaver for dato (og springe over at skulle matche datoformatmodellen):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';