使用substr时出现to_date错误

时间:2013-03-19 14:23:58

标签: sql database oracle

当我跑步时:

select to_date('substr(21120319,3)','YYMMDD') 
from dual 

我收到了错误:

  

日期不在-4719和+9999的有效范围内。

但如果这样做:

select to_date('120319','YYMMDD') 
from dual

我的查询运行正常并给出了输出19-MAR-12。

出现此错误的原因是什么。请帮我理解这个。

感谢您的时间。

3 个答案:

答案 0 :(得分:4)

你必须从字符串文字中删除substr。

select to_date(substr('21120319', 3),'YYMMDD') 
from dual ;

答案 1 :(得分:0)

select to_date('substr(21120319,3)','YYMMDD')  from dual ;

现在substr(21120319,3)也是字符串

的一部分

将其更改为

  select to_date(substr('21120319',3),'YYMMDD')  from dual ;

答案 2 :(得分:0)

您可能需要

select to_date('21120319','YYYYMMDD') 
from dual 

不需要子系统,它将返回错误的世纪,21120319应该返回3月19日2112而不是2012年3月19日。