Una fecha no tiene formato; se almacenada internamente en la base de datos como 7 bytes (que representa año, mes, día, hora, minuto y segundo) y no es hasta que la interfaz de usuario que esté utilizando (es decir, SQL/Plus, SQL Developer, Java, etc.) intente mostrársela a usted, el usuario, y convierta en algo que encontraría significativo (generalmente una cadena) que la fecha tiene un formato.
Para corregir su consulta, solo necesita encerrar la cadena de fecha entre comillas simples y usar YY
para que coincida con el formato de año de 2 dígitos (de lo contrario, Oracle asumirá que 17
en el formato YYYY
es el año 0017
y el siglo no será como esperas
):
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');
Sin embargo, también puede usar literales de fecha (y evitar tener que hacer coincidir el modelo de formato de fecha):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';