5

私の質問は

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です。

どうしてこんなふうになっているのかわからないので、助けてください。

前もって感謝します

4

2 に答える 2

3

選択する前に、日付までの文字列をキャストしてください。

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

また

SELECT TO_CHAR(TO_DATE('03-JAN-2013'), 'D') FROM DUAL;
于 2013-01-03T10:00:03.647 に答える
2

関数を呼び出す前に、文字列リテラルをデータ型に'03-JAN-2013'変換する必要があります。dateTO_CHAR

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

RES
-----
 5
于 2013-01-03T10:00:52.257 に答える