Ein Datum hat kein Format – es wird intern in der Datenbank als 7 Byte gespeichert (repräsentiert Jahr, Monat, Tag, Stunde, Minute und Sekunde) und erst dann, wenn die von Ihnen verwendete Benutzeroberfläche (z. B. SQL/Plus, SQL Developer, Java usw.) versucht, sie Ihnen, dem Benutzer, anzuzeigen und konvertiert es in etwas Sinnvolles umzuwandeln (normalerweise eine Zeichenkette), dass das Datum ein Format hat.
Um Ihre Abfrage zu korrigieren, müssen Sie nur die Datumszeichenfolge in einfache Anführungszeichen setzen und YY
verwenden um dem zweistelligen Jahresformat zu entsprechen (sonst geht Oracle davon aus, dass 17
im Format YYYY
ist das Jahr 0017
und das Jahrhundert wird nicht so sein, wie Sie es erwarten
):
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');
Sie können jedoch auch Datumsliterale verwenden (und die Anpassung an das Datumsformatmodell überspringen):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';