I've just try the following query:
SELECT EXAM_NUMBER, DATE_EXAM, DATE_UNIV
FROM UNIVERSITY.C_CALENDAR cc2
WHERE EXAM_NUMBER = 'L'
AND LAST_FILE = 'OK'
AND MATTER = 'MATH'
AND STATE_CODE NOT IN ('FC')
AND TO_CHAR(DATE_EXAM, 'YYYY-MM-DD') = TO_CHAR(SYSDATE - 2, 'YYYY-MM-DD')
AND TO_CHAR(DATE_UNIV, 'YYYY-MM-DD HH24:MI:SS') < TO_CHAR(SYSDATE - 5, 'YYYY-MM-DD HH24:MI:SS')
ORDER BY DATE_EXAM DESC
I always get error
ORA-00911: invalid character
could you help me?
Your query appears to be fine. You may have an invisible character in the source code (but it is not showing when I copy-paste from your question, even looking at the mark-up).
You do not need to use TO_CHAR
when filtering (as it will prevent Oracle from using an index on the column):
SELECT EXAM_NUMBER,
DATE_EXAM,
DATE_UNIV
FROM UNIVERSITY.C_CALENDAR cc2
WHERE EXAM_NUMBER = 'L'
AND LAST_FILE = 'OK'
AND MATTER = 'MATH'
AND STATE_CODE != 'FC'
AND DATE_EXAM >= TRUNC(SYSDATE - 2)
AND DATE_EXAM < TRUNC(SYSDATE - 1)
AND DATE_UNIV < SYSDATE - 5
ORDER BY
DATE_EXAM DESC