sql oracle ora 01843输入不错,错误

时间:2014-11-15 04:41:09

标签: sql oracle

这是所需的代码。

我编辑了内容。

CREATE OR REPLACE TRIGGER horaire_heure
BEFORE INSERT OR UPDATE ON Horaire
FOR EACH ROW
BEGIN
:NEW.heure_debut := to_char(:NEW.heure_debut,'hh24:mi:ss');
:NEW.heure_fin := to_char(:NEW.heure_fin,'hh24:mi:ss');
END;
/

输入

INSERT INTO Horaire
VALUES (1,2,TO_DATE('02/01/2000 13:30:00','DD/MM/YYYY HH24:MI:SS'),TO_DATE('02/01/2000 16:30:00','DD/MM/YYYY HH24:MI:SS'),NULL);

现在弹出ORA-01843。告诉我这个月是无效的。

怎么了?

1 个答案:

答案 0 :(得分:0)

在您的插入语句中,您将'2000/01/02 13:30:00'转换为日期格式,并在触发器中使用to_Date转换日期值! 然后从'2000/01/02 13:30:00'获得时间部分,由于2日期转换,您的时间将是'00:00:00'!

另一方面,我认为heure_debut字段的类型是DATE。并且您希望在触发器中将其更改为varchar。

我认为您必须更改to_char和to_date的位置以插入时间而不是日期和时间。