ORA-01481: to_date 处的数字格式模型无效

ORA-01481: invalid number format model at to_date

这是我的 table:

create table exemplare(
    id integer,
    id_tierart integer not null,
    name varchar2(32),
    details varchar2(32),
    geburtsdatum date,
    kaufdatum date,
    
    constraint pk_exemplare_id primary key(id),
    constraint fk_exemplare_id_tierarzt foreign key(id_tierart) references tierarten(id),
    constraint uq_exemplare_name unique(name, id_tierart),
    constraint ck_exemplare_geburtsdatum check(to_char(geburtsdatum, 'mm') < 10),
    -- constraint ck_exemplare_kaufdatum check(to_char(geburtsdatum, 'yyyy') - to_char(kaufdatum, 'yyyy') <= 100),
    constraint ck_exemplare_kaufdatum check(to_char(kaufdatum-geburtsdatum, 'yyyy') <= 100),
    constraint ck_exemplare_id check(MOD(id, 10) = 0)
);

insert into exemplare values(10, 11, 'Hugo', 'bedroht', to_date('13.05.1975', 'dd.mm.yyyy'), to_date('04.07.2018', 'dd.mm.yyyy'));
insert into exemplare values(20, 22, 'Fred', 'nicht bedroht', to_date('13.05.1975', 'dd.mm.yyyy'), to_date('04.07.2018', 'dd.mm.yyyy'));

在插入处说:

Fehler beim Start in Zeile: 66 in Befehl -
insert into exemplare values(20, 22, 'Fred', 'nicht bedroht', to_date('13.05.1975', 'dd.mm.yyyy'), to_date('04.07.2018', 'dd.mm.yyyy'))
Fehlerbericht -
ORA-01481: invalid model for number format

这似乎是 to_date 函数的某种问题,但我无法弄清楚到底是什么问题 有谁知道为什么它不起作用?

我认为问题是这个约束:

constraint ck_exemplare_kaufdatum check(to_char(kaufdatum-geburtsdatum, 'yyyy') <= 100),

我们可以在 Oracle 中对日期进行算术运算,所以这个 kaufdatum-geburtsdatum 有效但结果是 numeric。因此在 TO_CHAR() 中使用日期格式掩码是无效的。

您发布的代码显示了应该有效的约束的注释版本。为什么不用它呢?

constraint ck_exemplare_kaufdatum check(to_char(geburtsdatum, 'yyyy') - to_char(kaufdatum, 'yyyy') <= 100)