Porównujesz dwa STRINGS . Musisz porównać DATĘ s. Jak już powiedziałem w drugiej odpowiedzi tutaj, musisz zostawić datę tak, jak jest dla obliczeń DATE. TO_CHAR jest do wyświetlania i TO_DATE jest konwersja literału napisowego na 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')
Ponadto REPORTDATE jest kolumną DATE, dlatego będzie zawierała element datetime. Jeśli więc chcesz wykluczyć element czasu podczas porównywania, musisz użyć TRUNC
WHERE TRUNC(REPORTDATE) > TO_DATE('09.11.2013', 'DD.MM.YYYY')
Jednak zastosowanie TRUNC w dniu kolumna pominie każdy zwykły indeks na tej kolumnie. Z punktu widzenia wydajności lepiej użyj warunku zakresu dat .
Na przykład
WHERE REPORTDATE
BETWEEN
TO_DATE('09.11.2013', 'DD.MM.YYYY')
AND
TO_DATE('09.11.2013', 'DD.MM.YYYY') +1