Tanggal tidak memiliki format - tanggal disimpan secara internal ke database sebagai 7-byte (mewakili tahun, bulan, hari, jam, menit dan detik) dan tidak sampai antarmuka pengguna apa pun yang Anda gunakan (yaitu SQL/Plus, Pengembang SQL, Java, dll) mencoba menampilkannya kepada Anda, pengguna, dan mengonversi menjadi sesuatu yang menurut Anda bermakna (biasanya berupa string) yang memiliki format tanggal.
Untuk memperbaiki kueri Anda, Anda hanya perlu mengapit string tanggal dalam tanda kutip tunggal dan menggunakan YY
untuk mencocokkan format tahun 2 digit (jika tidak, Oracle akan menganggap bahwa 17
dalam format YYYY
adalah tahun 0017
dan abad tidak akan seperti yang Anda harapkan
):
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');
Namun, Anda juga dapat menggunakan literal tanggal (dan melewati harus mencocokkan model format tanggal):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';