Datum nemá formát – je interně uloženo do databáze jako 7bajtové (představující rok, měsíc, den, hodinu, minutu a sekundu) a není to dokud jakékoli uživatelské rozhraní, které používáte (tj. SQL/Plus, SQL Developer, Java atd.), se pokusí zobrazit vám, uživateli, a převede to do něčeho, co byste považovali za smysluplné (obvykle řetězec), že datum má formát.
Chcete-li svůj dotaz opravit, stačí zadat řetězec data do jednoduchých uvozovek a použít YY
aby odpovídal 2místnému formátu roku (jinak bude Oracle předpokládat, že 17
ve formátu YYYY
je rok 0017
a století nebude takové, jaké očekáváte
):
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');
Můžete však také použít datové literály (a přeskočit nutnost odpovídat modelu formátu data):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';