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 的 SQL 查询实例:缺少表达式错误