Una data non ha un formato:è memorizzata internamente nel database come 7 byte (che rappresentano anno, mese, giorno, ora, minuti e secondi) e non è fino a quando l'interfaccia utente che stai utilizzando (ad esempio SQL/Plus, SQL Developer, Java, ecc.) non tenta di mostrarlo a te, all'utente e converte in qualcosa che potresti trovare significativo (di solito una stringa) che la data abbia un formato.
Per correggere la tua richiesta devi solo racchiudere la stringa della data tra virgolette singole e utilizzare YY
in modo che corrisponda al formato dell'anno a 2 cifre (altrimenti Oracle presumerà che 17
nel formato YYYY
è l'anno 0017
e il secolo non sarà come ti aspetti
):
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');
Tuttavia, puoi anche utilizzare i valori letterali della data (e saltare la corrispondenza con il modello del formato della data):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';