to_char 函数问题,日期以“dd-mon-yyyy”格式传递

Tan*_*iya 5 sql oracle oracle11g

我的查询是

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

但发生了错误

ORA-01722: invalid number
01722. 00000 -  "invalid number"
*Cause:    
*Action:
Run Code Online (Sandbox Code Playgroud)

但是当查询更改为 select TO_CHAR(sysdate, 'D') from dual;

结果是正确答案 5。

我不明白为什么它会这样,请帮助我。

提前致谢

Tec*_*hDo 3

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

SELECT TO_CHAR(CAST('03-JAN-2013' AS DATE), 'D') FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

或者

SELECT TO_CHAR(TO_DATE('03-JAN-2013'), 'D') FROM DUAL;
Run Code Online (Sandbox Code Playgroud)