ORA-00904: sysdate 无效标识符错误

ORA-00904: sysdate invalid identifier error

我正尝试 运行 在 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))

谢谢, A运行一个

我认为您不需要在引号下提供 sysdate,只需提供 sysdate。 目前它被当作字符串,所以给你无效的标识符错误。

正如 Vijay 所说,你应该这样写(我还修复了你的 | | 可能导致其他错误的问题:-> ||):

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))