SQL中的日期格式

时间:2018-09-10 06:29:36

标签: sql oracle

((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

2 个答案:

答案 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,因为如上所述,相关的子查询必须只返回单个日期值。