Датата няма формат - тя се съхранява вътрешно в базата данни като 7-байта (представляващ година, месец, ден, час, минута и секунда) и чак когато потребителският интерфейс, който използвате (т.е. SQL/Plus, SQL Developer, Java и т.н.), не се опита да го покаже на вас, потребителя, и преобразува в нещо, което бихте намерили за смислено (обикновено низ), че датата има формат.
За да коригирате заявката си, трябва само да оградите низа с дата в единични кавички и да използвате YY
за да съответства на двуцифрения формат на годината (в противен случай Oracle ще приеме, че 17
във формат YYYY
е годината 0017
и векът няма да бъде такъв, какъвто очаквате
):
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');
Можете обаче също да използвате литерали за дата (и да пропуснете съвпадението с модела на формата на датата):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';