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

Posted

技术标签:

【中文标题】ORA-00904: sysdate 无效标识符错误【英文标题】:ORA-00904: sysdate invalid identifier error 【发布时间】:2017-05-19 10:50:45 【问题描述】:

我试图在 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))

谢谢, 阿鲁娜

【问题讨论】:

对于初学者,不要将SYSDATE 放在引号中。 谢谢你,它现在可以工作了:) 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于ORA-00904: sysdate 无效标识符错误的主要内容,如果未能解决你的问题,请参考以下文章

PLSQL下ORA-00904:"OTHER_XML":标识符无效

SQL 错误:ORA-00904:“GENDER”:无效标识符 00904。00000 -“%s:无效标识符”

错误报告:SQL 错误:ORA-00904::无效标识符 00904。00000 - “%s:无效标识符”

ORA-00904: 无效标识符 00904. 00000 - "%s: 无效标识符"

为啥我会收到:[Oracle][ODBC][Ora]ORA-00904:标识符无效

ORA-00904 无效标识符错误