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: 无效标识符"