0

以下は、エラーをスローしている私のオラクル更新クエリです--

テーブルを更新 Set col1 = To_date(:dateFill, 'mm/dd/yyyy hh24:mi:ss') Where Fil1 = :ID;

dateFill = 2012 年 1 月 5 日、ID = 15

このステートメントはプロシージャーで実行されています。

エラー -:ORA-01722: 無効な数値 (日付フィールド)

なぜ「select To_date('01/05/2012 00:00:00', 'mm/dd/yyyy hh24:mi:ss') from dual;」なのか教えてください。「05-JAN-2012 00:00:00」のような結果が得られます.???

いくつかの答えを教えてください。

4

4 に答える 4

1

dateFill = 01/05/2012 の場合、「hh24:mi:ss」を含む日付形式を指定しているのはなぜですか?

于 2012-12-19T17:22:00.283 に答える
1

文字列を数値に変換しようとすると、ORA-01722 エラーが発生し、文字列を有効な数値に変換できません。有効な数値には、'0' から '9' までの数字と、おそらく 1 つの小数点、文字列の先頭または末尾の符号 (+ または -)、または 'E' または 'e' (浮動小数点数の場合) が含まれます。指数表記のポイント番号)。

于 2012-12-19T17:23:36.380 に答える
0

なぜ「select To_date('01/05/2012 00:00:00', 'mm/dd/yyyy hh24:mi:ss') from dual;」なのか教えてください。「05-JAN-2012 00:00:00」のような結果が得られます.???

日付の表示方法は、クライアント/Nls の日付形式の設定によって異なります。

SQL> select To_date('01/05/2012 00:00:00','mm/dd/yyyy hh24:mi:ss') from dual;

TO_DATE('01/05/20120
--------------------
05-jan-2012 00:00:00

SQL> alter session set nls_date_format='mm/dd/yyyy hh24:mi:ss';

Session altered.

SQL> select To_date('01/05/2012 00:00:00','mm/dd/yyyy hh24:mi:ss') from dual;

TO_DATE('01/05/2012
-------------------
01/05/2012 00:00:00

SQL>
于 2012-12-19T17:48:38.083 に答える
0

to_date は常に「文字」で動作します。

to_date(char[,'format'[,nls_lang])

変数'dateFill'は Number データ型です。Castまたは、convertこの「dateFill」フィールドを varchar にすると、機能します。

于 2012-12-19T17:27:24.787 に答える