我正在尝试从用户输入中将Date插入表中,但有些东西不起作用。
我有以下查询:
INSERT INTO DOCTORS.TREATMENTS
(START_OF_TREATMENT, END_OF_TREATMENT, DOCTORS_ID,PACIENTS_ID, DIAGNOSIS_ID)
VALUES (TO_DATE(&startdate, 'yyyy/mm/dd'), TO_DATE(&enddate, 'yyyy/mm/dd'), 3, 1, 1);
对于开始日期,我设置:
2000年10月1日
对于结束日期,我设置:
2000年11月1日
对我来说似乎没问题,但我有以下错误:
错误报告 - ORA-01858:找到了一个非数字字符,其中包含数字 ORA-06512:在“SYS.STANDARD”,第167行 ORA-06512:第2行 01858. 00000 - “找到了数字所在的非数字字符” *原因:使用日期格式模型转换的输入数据是 不正确。输入数据不包含数字所在的数字 格式模型要求。 *操作:修复输入数据或日期格式模型以确保 元素在数量和类型上匹配。然后重试该操作。
任何人都可以向我解释为什么会发生此错误。
祝你好运, 斯托。
答案 0 :(得分:3)
传递给TO_DATE的第一个参数的值必须是字符串。在用您的代码替换后,您的代码将显示为
TO_DATE(2000/10/01, 'yyyy/mm/dd')
如图所示失败。
解决方案是将参数用法放在单引号中以使替换值成为字符串,如
TO_DATE('&startdate', 'yyyy/mm/dd')
这样,当&startdate
被替换时,您将获得
TO_DATE('2000/10/01', 'yyyy/mm/dd')
将按预期工作。
对&enddate
执行相同操作。
祝你好运。