2017-08-01 91 views
0

我想使用转换函数来将日期字段转换为varchar,但它不断给予缺少的表达式错误。转换函数中缺少表达式

我的查询:

select INVENTORY_ITEM_ID, 
     convert(varchar(20), IMPLEMENTATION_DATE,110) 
from apps.mtl_item_revisions 
where INVENTORY_ITEM_ID=21928; 

给出了错误:

ORA-00936: missing expression
00936. 00000 - "missing expression"
*Cause:
*Action: Error at Line: 97 Column: 35

+0

使用[TO_CHAR(https://docs.oracle.com/cd/B19306_01/server.102/b14200 /functions180.htm)。 'CONVERT'用于改变字符串的字符集。 –

+0

在所有情况下 - 无论何时,例如在插入中使用此日期(IMPLEMENTATION_DATE)到VARCHAR2列中,Oracle都会将其隐式转换为to_char。 – g00dy

+0

转义序列不支持TO_CHAR。我想在Notes SQL中使用这个(CONVERT),它是一个ODBC驱动程序。 – Princei

回答

-1

下面一行是Microsoft SQL Server的语法,而不是Oracle语法:

convert(varchar(20), IMPLEMENTATION_DATE,110) 

不要紧什么一种你使用的数据库驱动程序,或者是谁写的。使用SQLServer语法将查询发送到Oracle,并且Oracle发出错误。 (另外,虽然它可能在查询工具中需要,但要小心以分号终止oracle SQL语句;在某些语言中(例如C#或PL/SQL中的动态SQL),可能会出现意外的字符错误。)

更改SQL这样的:

select INVENTORY_ITEM_ID, 
    to_char(IMPLEMENTATION_DATE, 'mm-dd-yyyy') as IMPLEMENTATION_DATE 
from apps.mtl_item_revisions 
where INVENTORY_ITEM_ID=21928 

这是甲骨文相当于SQLServer的110日期格式的

+1

'不要在客户端应用程序中用分号终止oracle SQL;你可能会得到一个意想不到的人物错误 - 我想,取决于客户端应用程序。我曾经使用过的所有图形用户界面都可以正常工作(不用说,甚至期望)分号来区分不同的查询! – Boneist

+0

是的,但这是客户端应用程序(金色,蟾蜍等)分割和剥离的功能。如果它被放入代码中,驱动程序将更有可能按照原样传递它,并且oracle将会拒绝它。..我提高了答案的清晰度,感谢您的反馈! –

+0

“如果它被放入代码”......呃,PL/SQL需要一个分号,所以,你知道,#NotAllCode – Boneist