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

Oracle SQL:如何将'1/15/1976'转为19760115日期并解决ORA-01722错误

修复ORA-01722错误并得到19760115格式日期

嘿,我来帮你搞定这个问题!你遇到的ORA-01722错误,根源在于对to_char和to_date的用法逻辑搞反啦。

错误原因分析

你当前的代码:

SELECT to_date(to_char('1/15/1976','MM/DD/YYYY'), 'YYYYMMDD') FROM DUAL;

这里有两个核心问题:

  1. to_char的第一个参数要求是日期或数字类型,但你传入的是字符串'1/15/1976',Oracle会尝试把这个字符串强制转成数字,显然'1/15/1976'不是合法数字,所以抛出了“invalid number”错误。
  2. 逻辑顺序错误——应该先把字符串解析成日期,再格式化成你想要的样式,而不是反过来操作。

正确的写法

要得到19760115格式的结果,正确的步骤是:

  1. 用to_date把输入的字符串'1/15/1976'按照'MM/DD/YYYY'的格式解析为Oracle可识别的日期类型
  2. 再用to_char把这个日期类型格式化为'YYYYMMDD'的字符串格式

对应的代码:

SELECT to_char(to_date('1/15/1976','MM/DD/YYYY'), 'YYYYMMDD') FROM DUAL;

执行这个语句就能得到你想要的19760115结果啦。

额外补充

如果你需要的是数字类型的19760115(而不是字符串),可以在外面套一层to_number:

SELECT to_number(to_char(to_date('1/15/1976','MM/DD/YYYY'), 'YYYYMMDD')) FROM DUAL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:59:07