Anda membandingkan dua STRINGS . Anda perlu membandingkan TANGGAL s. Seperti yang sudah saya katakan di jawaban lain di sini, Anda harus membiarkan tanggal seperti untuk perhitungan DATE. TO_CHAR adalah untuk tampilan, dan TO_DATE adalah mengubah literal string menjadi DATE.
SELECT TO_CHAR(REPORTDATE, 'DD.MM.YYYY'),
COUNT(*)
FROM TABLE
WHERE REPORTDATE > TO_DATE('09.11.2013', 'DD.MM.YYYY')
GROUP BY TO_CHAR(REPORTDATE, 'DD.MM.YYYY')
Juga, REPORTDATE adalah kolom DATE, karena itu akan memiliki elemen datetime. Jadi, jika Anda ingin mengecualikan elemen waktu saat membandingkan, Anda perlu menggunakan TRUNC
WHERE TRUNC(REPORTDATE) > TO_DATE('09.11.2013', 'DD.MM.YYYY')
Namun, menerapkan TRUNC pada tanggal kolom akan menekan indeks regular reguler apa pun pada kolom itu. Dari sudut pandang kinerja, sebaiknya gunakan Kondisi rentang tanggal .
Misalnya,
WHERE REPORTDATE
BETWEEN
TO_DATE('09.11.2013', 'DD.MM.YYYY')
AND
TO_DATE('09.11.2013', 'DD.MM.YYYY') +1