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

Oracle中to_char函数使用月份年份及invalid number报错解决问询

Oracle中to_char处理字符串日期报错invalid number的解决方案

报错原因

to_char() 函数的第一个入参要求为日期类型或数字类型,你直接传入字符串'Jul-2020'时,Oracle会尝试将字符串隐式转换为数字/日期,隐式转换规则和你传入的字符串格式不匹配,就会抛出invalid number错误。

解决方案

你需要先把字符串格式的时间转换为日期类型,再调用to_char()输出目标格式:

  1. 用to_date()将'Jul-2020'转换为日期,注意要匹配原始字符串的格式掩码,同时指定日期语言避免英文月份识别失败:
    to_date('Jul-2020', 'Mon-YYYY', 'nls_date_language=english')
  2. 在外层嵌套to_char()转换为你需要的MM-YYYY格式

最终可用代码

to_char(to_date('Jul-2020', 'Mon-YYYY', 'nls_date_language=english'), 'MM-YYYY')

注意事项

  • 不要省略to_date()的格式掩码,避免依赖数据库默认格式,出现跨环境运行报错的问题
  • 如果你的数据库默认语言为英文,可省略nls_date_language=english参数,保留该参数兼容性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:45:02