Une date n'a pas de format - elle est stockée en interne dans la base de données sous la forme de 7 octets (représentant l'année, le mois, le jour, l'heure, la minute et la seconde) et ce n'est que lorsque l'interface utilisateur que vous utilisez (c'est-à-dire SQL/Plus, SQL Developer, Java, etc.) essaie de l'afficher pour vous, l'utilisateur, et convertit en quelque chose que vous trouveriez significatif (généralement une chaîne) que la date a un format.
Pour résoudre votre requête, il vous suffit d'entourer la chaîne de date de guillemets simples et d'utiliser YY
pour correspondre au format de l'année à 2 chiffres (sinon Oracle supposera que 17
au format YYYY
est l'année 0017
et le siècle ne sera pas comme prévu
):
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');
Cependant, vous pouvez également utiliser des littéraux de date (et éviter de faire correspondre le modèle de format de date) :
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';