You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ORA-00936: 插入数据时缺失表达式问题求助

Oracle插入数据报错ORA-00936及TO_DATE使用问题解决

问题根源

Oracle数据库中不存在DATE('字符串', '格式')这种语法,这是MySQL等其他数据库的写法。你之前用TO_DATE提示无效,大概率是格式符与字符串不匹配或语法细节错误,改用DATE函数后直接触发ORA-00936(缺少表达式)的语法错误。

修正后的代码

原建表语句无需修改,插入语句需要做以下调整:

  1. 替换所有DATE()为Oracle专用的TO_DATE()函数
  2. 确保日期字符串的分隔符与格式符一致(比如01-07-2022对应DD-MM-YYYY)
  3. 时间格式符用HH:MI AM(12小时制),避免单H导致的解析问题
  4. 字符串类型的BOOKINGID值需加单引号,符合语法规范

修正后的INSERT语句:

INSERT INTO BOOKING VALUES(
  '4011', 
  TO_DATE('01/05/2022', 'DD/MM/YYYY'), TO_DATE('1:00PM', 'HH:MI AM'),
  TO_DATE('01-07-2022', 'DD-MM-YYYY'), TO_DATE('2:00PM', 'HH:MI AM'),
  TO_DATE('03-07-2022', 'DD-MM-YYYY'), TO_DATE('3:00PM', 'HH:MI AM'),
  2, 0, 'Birthday Cake for dinner on 09-07-2022'
);

关键错误点说明

  • 函数误用:Oracle仅支持TO_DATE(字符串, 格式)来完成字符串到日期的转换,不支持其他数据库的DATE函数语法
  • 格式不匹配:日期字符串中的分隔符(/或-)必须与格式符中的对应符号一致,否则会触发日期解析错误
  • 时间格式符:12小时制的小时部分建议用HH,单H在部分场景下可能无法正确解析带AM/PM的时间
  • 字符串类型值:BOOKINGID定义为varchar(4),插入时需将数字用单引号包裹,避免隐式转换带来的潜在问题

内容的提问来源于stack exchange,提问作者Lovena Ujoodha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:09:24