Ett datum har inget format - det är lagrat internt i databasen som 7-byte (representerar år, månad, dag, timme, minut och sekund) och det är inte förrän vilket användargränssnitt du än använder (t.ex. SQL/Plus, SQL Developer, Java, etc) försöker visa det för dig, användaren, och konverterar det till något du skulle tycka är meningsfullt (vanligtvis en sträng) att datumet har ett format.
För att fixa din fråga behöver du bara omge datumsträngen med enkla citattecken och använda YY för att matcha det tvåsiffriga årsformatet (annars kommer Oracle att anta att 17 i formatet YYYY är årtalet 0017 och århundradet kommer inte att bli som du förväntar dig
):
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 dock även använda datumbokstav (och hoppa över att behöva matcha datumformatmodellen):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';