ora:00936 缺少表达式错误

Posted

技术标签:

【中文标题】ora:00936 缺少表达式错误【英文标题】:ora:00936 Missing Expression error 【发布时间】:2015-10-01 10:28:24 【问题描述】:

以下查询出现 ORA:00936 错误。请让我知道查询中的问题

SELECT convert(DATE,r.created_dt) as created_dt,
r.created_dt as time,
r.rep_id,
rt.rep_type_id,
rt.rep_type_desc
FROM t_tbm_ia_rep_2015 r,
t_tbm_ia_rep_type_2015 rt
WHERE r.rep_type_id=rt.rep_type_id
GROUP BY r.created_dt,
r.rep_id,
rt.rep_type_id,
rt.rep_type_desc
ORDER BY rt.rep_type_id

【问题讨论】:

你想用 r.created_dt 做什么?我打赌convert() 不是您需要的功能。如果该列是 VARCHAR2 并且您想要将其转换为日期,那么您应该使用 to_date()。如果它是 DATE 或 TIMESTAMP,并且您希望将其显示为不同格式的字符串,那么您应该使用 to_char()。无论您使用哪种功能,您都需要提供相关的格式掩码。 (例如select to_char(sysdate, 'dd/mm/yyyy hh24:mi:ss') from dual; 【参考方案1】:

SELECT convert(DATE,r.created_dt) as created_dt

问题在于 CONVERT 函数的使用不正确。请查看documentation。

SQL> SELECT convert(DATE,hiredate) as created_dt from emp;
SELECT convert(DATE,hiredate) as created_dt from emp
               *
ERROR at line 1:
ORA-00936: missing expression


SQL>

我猜您正在尝试转换数据类型,您可以使用 TO_DATE 将字符串转换为日期。或者,TO_CHAR 反之亦然。

【讨论】:

以上是关于ora:00936 缺少表达式错误的主要内容,如果未能解决你的问题,请参考以下文章

ora:00936 缺少表达式错误

ORA-00936 缺少表达式

带有 ORA-00936 的 SQL 查询实例:缺少表达式错误

ORA-00936: 缺少表达式解决方案 - 转换函数

什么可能导致 ORA-00936 - 缺少以下 sql 的表达式?

ORA 00936 缺少表达式