1

ハイ

テーブル:

create table Players (PlayerNo number (4) not null, Name varchar2(15), date_of_birth date,leagno varchar(4));

間違った挿入:

insert into PLAYERS (PlayerNo,Name,date_of_birth,leagno) VALUES (1,'Philipp K','Jan-10-1999','1')

どうしたの?

エラーコード:

Fehler beim Start in Zeile 1 in Befehl:
insert into PLAYERS (PlayerNo,Name,date_of_birth,leagno) VALUES (1,'Philipp K','Jan-10-1999','1')
Fehlerbericht:
SQL-Fehler: ORA-01858: Ein nicht-numerisches Zeichen wurde gefunden, während ein numerisches Zeichen erwartet wurde
01858. 00000 -  "a non-numeric character was found where a numeric was expected"
*Cause:    The input data to be converted using a date format model was
           incorrect.  The input data did not contain a number where a number was
           required by the format model.
*Action:   Fix the input data or the date format model to make sure the
           elements match in number and type.  Then retry the operation.
4

3 に答える 3

2

*原因: 日付形式モデルを使用して変換する入力データが正しくありません。入力データには、形式モデルで必要な数値が含まれていませんでした。

使用している日付文字列は、オラクルが期待しているものと一致しません。デフォルトの形式である iirc は、使用しようとしている Mon-DD-YYYY ではなく、DD-Mon-YYYY です。

于 2010-11-27T15:51:06.653 に答える
2
INSERT
INTO PLAYERS
  (
    PlayerNo,
    Name,
    date_of_birth,
    leagno
  )
  VALUES
  (
    1,
    'Philipp K',
    TO_DATE('Jan-10-1999','Mon-dd-yyyy'),
    '1'
  )

TO_DATE を正しい形式で使用して日付を指定する必要があります。

于 2010-11-27T15:52:38.080 に答える
1

エラーは次のように説明します。

「日付形式モデルを使用して変換する入力データが正しくありませんでした。入力データには、形式モデルで必要な数値が含まれていませんでした」

これは、date_of_birth 列に渡す値の形式が間違っていることを意味します。デフォルトでは、Oracle は日付が DD-MON-YYYY の形式であると想定しています。MON-DD-YYYY の形式で日付を渡しています。

これに対処する方法は 2 つあります。つまり 3 つあります。

  1. 明示的なフォーマット マスクを使用します。to_date('Jan-10-1999', 'MON-DD-YYYY')
  2. セッションまたはデータベース レベルで、NLS_DATE_FORMAT パラメータを変更します。詳細については、こちらこちらをご覧ください。
  3. 挿入ステートメントを変更して、期待される形式で日付を渡します。
于 2010-11-27T16:03:12.877 に答える