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

获取日期当月最后一天时触发ORA-01861格式不匹配错误

解决ORA-01861错误并获取月份最后一天的日部分

错误原因

ORA-01861错误的本质是日期字面量与Oracle默认解析格式不匹配。你的V_BILLEND_DT如果是字符串类型,直接传入LAST_DAY时,Oracle会用会话默认的日期格式去解析它,但默认格式无法识别2022-12-31T00:00:00+05:30这种带时区的ISO格式,导致解析失败。

解决方案

1. 字符串类型变量处理

如果V_BILLEND_DT是字符串类型,必须先将其转换为Oracle能识别的带时区时间戳类型,再进行后续处理:
使用TO_TIMESTAMP_TZ函数搭配对应格式模型解析字符串,传入LAST_DAY获取当月最后一天,最后用TO_CHAR提取日部分。

2. 正确执行语句

SELECT TO_CHAR(LAST_DAY(TO_TIMESTAMP_TZ(V_BILLEND_DT, 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM')), 'DD')
INTO V_updatMonth
FROM DUAL;

格式模型说明:

  • YYYY-MM-DD:匹配日期部分
  • "T":匹配字面量T
  • HH24:MI:SS:匹配时间部分
  • TZH:TZM:匹配时区偏移(如+05:30)

3. 日期/时间戳类型变量处理

如果V_BILLEND_DT已经是DATE或TIMESTAMP WITH TIME ZONE类型仍报错,可显式指定转换格式,或检查会话的NLS_DATE_FORMAT参数是否兼容,优先使用显式转换保证兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:37:10