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

Oracle插入datetime数据遇ORA-01861错误求助

解决Oracle ORA-01861错误:插入datetime类型数据的正确方法

你执行的插入语句中,FECHA_Y_HORA字段的字符串值'20120618 10:34:09 AM'与Oracle当前会话默认的日期格式不匹配,触发了ORA-01861错误。错误提示明确说明字面量和格式字符串不匹配,需要调整格式让两者一致。

原插入语句

insert into "PRUEBAS_MÉDICAS" (CÓDIGO, NOMBRE, FECHA_Y_HORA, RESULTADO) 
VALUES('78426', 'TOMOGRAFÍA', '20120618 10:34:09 AM', 'Tumor Abdominal' );

错误信息

Error SQL: ORA-01861: el literal no coincide con la cadena de formato 01861. 00000 - "literal does not match format string"
*Cause: Literals in the input must be the same length as literals in
the format string (with the exception of leading whitespace). If the "FX" modifier has been toggled on, the literal must match exactly,
with no extra whitespace. *Action: Correct the format string to match the literal.


方法一:使用TO_DATE显式转换(推荐)

这是最可靠的方式,不依赖会话的默认日期格式,直接将字符串按指定格式转换为日期类型。修改后的SQL如下:

insert into "PRUEBAS_MÉDICAS" (CÓDIGO, NOMBRE, FECHA_Y_HORA, RESULTADO) 
VALUES('78426', 'TOMOGRAFÍA', TO_DATE('20120618 10:34:09 AM', 'YYYYMMDD HH:MI:SS AM'), 'Tumor Abdominal' );

格式符说明:

  • YYYY:4位年份
  • MM:2位月份
  • DD:2位日期
  • HH:12小时制的小时数
  • MI:分钟数
  • SS:秒数
  • AM:上午/下午标识(大小写不敏感)

如果FECHA_Y_HORA是TIMESTAMP类型,改用TO_TIMESTAMP函数,格式字符串一致:

insert into "PRUEBAS_MÉDICAS" (CÓDIGO, NOMBRE, FECHA_Y_HORA, RESULTADO) 
VALUES('78426', 'TOMOGRAFÍA', TO_TIMESTAMP('20120618 10:34:09 AM', 'YYYYMMDD HH:MI:SS AM'), 'Tumor Abdominal' );

方法二:修改会话默认日期格式(仅临时生效)

如果只是临时测试,可以先修改当前会话的日期格式,使其匹配输入的字符串,再执行插入:

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD HH:MI:SS AM';

然后执行原插入语句即可。但这种方法仅对当前会话有效,退出会话后会恢复默认值,生产环境不建议使用,避免因会话设置不一致引发其他问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:56:24