to_char函数疑问

[复制链接]
查看11 | 回复1 | 2011-8-21 17:12:35 | 显示全部楼层 |阅读模式
SQL> select to_char(2011-6-21) from dual;

TO_CHAR(2011-6-21)
------------------
1984

SQL> select to_char(2011-6-21,'yyyymmdd') from dual;

select to_char(2011-6-21,'yyyymmdd') from dual

ORA-01481: 无效的数字格式模型

SQL>
第一条语句执行结果为什么是1984
第二条语句为什么报错
O(∩_∩)O谢谢

回复

使用道具 举报

千问 | 2011-8-21 17:12:35 | 显示全部楼层
这个问题比较隐蔽,to_char这个类型函数可以处理字符,时间、数字格式类型的数据,但处理转义成对应的格式必须符合该类型的规则,1.select to_char(2011-6-21) from dual处理时候,先处理2011-6-21数据库把认为是一个数字,优先处理加减乘除,相减的结果就是1984在转义成字符也就是1984了;2.对于select to_char(2011-6-21,'yyyymmdd') from dual这个类型的报错,是应为从number转义到字符没有'yyyymmdd'这中转义格式,详细的转义格式请参考sql reference...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行