2013-01-03 33 views
3

我的查询是TO_CHAR函数问题 'DD-MON-YYYY'

select TO_CHAR('03-JAN-2013', 'D') from dual;

,但发生的

ORA-01722: invalid number 
01722. 00000 - "invalid number" 
*Cause:  
*Action: 

一个错误,但在查询改变select TO_CHAR(sysdate, 'D') from dual;

结果是正确的答案5.

我不明白为什么它的行为如此,请帮助我。

在此先感谢

+0

哦..!现在它被视为varchar权利? – Taniya

回答

1

请在选择之前将字符串转换为日期。

SELECT TO_CHAR(CAST('03-JAN-2013' AS DATE), 'D') FROM DUAL; 

OR

SELECT TO_CHAR(TO_DATE('03-JAN-2013'), 'D') FROM DUAL; 
2

'03-JAN-2013'字符串字面调用TO_CHAR功能之前,必须转换成date数据类型:

select TO_CHAR(to_date('03-JAN-2013', 'dd-MON-YYYY'), 'D') as res 
from dual 

RES 
----- 
5