Vous comparez deux STRINGS . Vous devez comparer la DATE s. Comme je l'ai déjà dit dans l'autre réponse ici, vous devez laisser la date telle quelle pour les calculs DATE. TO_CHAR est pour l'affichage, et TO_DATE est de convertir une chaîne littérale en 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')
De plus, REPORTDATE est une colonne DATE, elle aura donc un élément datetime. Donc, si vous souhaitez exclure l'élément de temps lors de la comparaison, vous devez utiliser TRUNC
WHERE TRUNC(REPORTDATE) > TO_DATE('09.11.2013', 'DD.MM.YYYY')
Cependant, l'application de TRUNC à la date colonne supprimerait tout index régulier sur cette colonne. Du point de vue des performances, mieux vaut utiliser une condition de plage de dates .
Par exemple,
WHERE REPORTDATE
BETWEEN
TO_DATE('09.11.2013', 'DD.MM.YYYY')
AND
TO_DATE('09.11.2013', 'DD.MM.YYYY') +1