Сравнявате два STRINGS . Трябва да сравните ДАТА с. Както вече казах в другия отговор тук, трябва да оставите датата такава, каквато е за изчисленията на ДАТА. TO_CHAR е за показване и TO_DATE е да конвертирате низов литерал в 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')
Освен това REPORTDATE е колона DATE, следователно ще има елемент datetime. Така че, ако искате да изключите елемента време, докато сравнявате, трябва да използвате TRUNC
WHERE TRUNC(REPORTDATE) > TO_DATE('09.11.2013', 'DD.MM.YYYY')
Прилагайки обаче TRUNC в колоната за датаната ще потисне всеки нормален индекс на тази колона. От гледна точка на ефективността е по-добре да използвате условие за период от време .
Например,
WHERE REPORTDATE
BETWEEN
TO_DATE('09.11.2013', 'DD.MM.YYYY')
AND
TO_DATE('09.11.2013', 'DD.MM.YYYY') +1