((SELECT ES.MCH_POS
FROM IFSAPP.EQUIPMENT_SERIAL ES
WHERE ES.CONTRACT = W.CONTRACT
AND ES.MCH_CODE = W.MCH_CODE), 'yyyy/mm/dd') as SALE_DATE
我运行此代码时,发生错误,为ORA-00907: missing right parenthesis
答案 0 :(得分:1)
ORA-00907:缺少右括号
这是语法错误。有时确实确实意味着我们有一个未配对的左括号。多数情况下,这意味着我们已经做出了决定,并且在编译器期望结束)
的地方有一个关键字或表达式。有时它只是指向错字。
, 'yyyy/mm/dd'
是一种格式掩码,用于将字符串转换为日期或日期转换为字符串。但是,您的代码片段没有TO_DATE()或TO_CHAR()函数,所以我猜这是您的问题。您有一个格式掩码,编译器认为其中应该只有)
。
仅需执行子查询就很难确定,但是可能您想要的是这样的东西:
(SELECT to_char(ES.MCH_POS, 'yyyy/mm/dd') as SALE_DATE
FROM IFSAPP.EQUIPMENT_SERIAL ES
WHERE ES.CONTRACT = W.CONTRACT
AND ES.MCH_CODE = W.MCH_CODE)
如果这不是您需要的确切解决方案,并且不能帮助您解决问题,请编辑您的问题,以包含有关您要解决的问题的更多详细信息。
答案 1 :(得分:0)
在Oracle中,您需要to_char()
函数
TO_CHAR(date-value,'date-format-mask')
从您的代码段来看,它应该看起来更像是9(我认为):
select ....
, to_char((SELECT ES.MCH_POS
FROM IFSAPP.EQUIPMENT_SERIAL ES
WHERE ES.CONTRACT = W.CONTRACT
AND ES.MCH_CODE = W.MCH_CODE
AND rownum = 1), 'yyyy/mm/dd') as SALE_DATE
即相关子查询返回一个日期值,然后将该日期值格式化为yyyy / mm / dd
nb:我输入了and rownum = 1
,因为如上所述,相关的子查询必须只返回单个日期值。