1

hy

桌子:

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

*原因:使用日期格式模型转换的输入数据不正确。输入数据不包含格式模型需要数字的数字。

您使用的日期字符串与 oracle 的预期不匹配。默认格式 iirc 是 DD-Mon-YYYY,而不是您尝试使用的 Mon-DD-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 的日期。

有两种 - 以及三种 - 处理这个问题的方法。

  1. 使用显式格式掩码:to_date('Jan-10-1999', 'MON-DD-YYYY')
  2. 在会话甚至数据库级别更改NLS_DATE_FORMAT 参数。在这里和这里找到更多信息
  3. 更改您的插入语句以以预期格式传递日期。
于 2010-11-27T16:03:12.877 回答