【问题标题】:ora:00936 Missing Expression errorora:00936 缺少表达式错误
【发布时间】: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;

标签: sql oracle oracle11g


【解决方案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 反之亦然。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多