Je vergelijkt twee STRINGS . U moet de DATUM . vergelijken s. Zoals ik al zei in het andere antwoord hier, moet u de datum laten zoals deze is voor DATE-berekeningen. TO_CHAR is voor weergave, en TO_DATE is om een letterlijke tekenreeks om te zetten in 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 is ook een DATE-kolom, dus het zal een datetime-element hebben. Dus als u het tijdselement wilt uitsluiten tijdens het vergelijken, moet u TRUNC . gebruiken
WHERE TRUNC(REPORTDATE) > TO_DATE('09.11.2013', 'DD.MM.YYYY')
Echter, het toepassen van TRUNC op de datum kolom zou elke reguliere index onderdrukken op die kolom. Gebruik vanuit prestatieoogpunt beter een Datumbereikvoorwaarde .
Bijvoorbeeld,
WHERE REPORTDATE
BETWEEN
TO_DATE('09.11.2013', 'DD.MM.YYYY')
AND
TO_DATE('09.11.2013', 'DD.MM.YYYY') +1