ORA-00904: ошибка неверного идентификатора sysdate
Я пытаюсь запустить ниже запрос в Oracle, но получаю эту ошибку. Есть идеи как решить?
SELECT DISTINCT t1.p_id "Id",
(TO_CHAR("sysdate", 'YYYY') + least(SIGN(("sysdate" - to_date('01-Aug-' | | TO_CHAR("sysdate", 'YYYY'), 'DD-Mon-RRRR'))), 0)) "Year"
FROM
t1,
t7,
t9
WHERE
t9.ei_id(+) = t7.e_id
AND (t7.e_student = t1.p_id)
AND (t7.e_module = t8.m_id)
AND (NVL(t9.ei_q18m06, t7.e_end) > '31-Jul-' | | (TO_CHAR("sysdate", 'YYYY') + least(SIGN(("sysdate" - to_date('01-Aug-' | | TO_CHAR("sysdate", 'YYYY'), 'DD-Mon-RRRR'))), 0) + - 5))
Спасибо аруна
2 ответа
Решение
Как говорит Виджай, вы должны написать это так (я также исправил | |
кто может вызвать другую ошибку: -> ||
):
SELECT DISTINCT t1.p_id "Id",
(TO_CHAR(sysdate, 'YYYY') + least(SIGN((sysdate - to_date('01-Aug-' || TO_CHAR(sysdate, 'YYYY'), 'DD-Mon-RRRR'))), 0)) "Year"
FROM
t1,
t7,
t9
WHERE
t9.ei_id(+) = t7.e_id
AND (t7.e_student = t1.p_id)
AND (t7.e_module = t8.m_id)
AND (NVL(t9.ei_q18m06, t7.e_end) > '31-Jul-' || (TO_CHAR(sysdate, 'YYYY') + least(SIGN((sysdate - to_date('01-Aug-' || TO_CHAR(sysdate, 'YYYY'), 'DD-Mon-RRRR'))), 0) + - 5))
Я думаю, вам не нужно указывать sysdate под кавычками, просто введите sysdate. в настоящее время он принимает в качестве строки, поэтому выдается неверный идентификатор ошибки.