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

Unix环境下SQL ORA-01843无效月份及日期格式转换求助

搞定Oracle日期格式:从DD-MON-YY到DD-MON-YYYY的正确转换

我最近在做视图开发时碰到个棘手的日期显示问题:底层表存的日期字符串格式是DD-MON-YY,但界面要求必须以DD-MON-YYYY的完整年份格式展示,折腾了好一会儿才解决,分享下过程:

  • 一开始想当然直接用to_char(tdj_Tran_dt,'DD-MON-YYYY')转换,结果直接踩坑——比如存储的20-OCT-17居然变成了20-OCT-0017,年份被解析成了0017,完全不是预期的2017。
  • 无奈的是系统已经完成数据迁移,没法修改表数据的插入格式,只能在查询层面找解决方案。
  • 后来试了嵌套转换的写法:TO_CHAR(TO_DATE(tdj_tran_dt,'DD-MON-RRRR'),'DD-MON-RRRR'),目前测试下来这个方法完全管用,能正确把两位年份的字符串识别成对应的四位完整年份,比如20-OCT-17会被转换成20-OCT-2017。
  • 另外在调试过程中还碰到过ORA-01843(无效月份)的错误,提醒下大家:这个错误大多是因为日期字符串和指定的格式不匹配,比如如果会话语言不是英文,MON对应的月份缩写就没法被识别,得确保格式里的MON和存储的月份缩写完全对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:40:26