to_char函数疑问

SQL>selectto_char(2011-6-21)fromdual;TO_CHAR(2011-6-21)------------------1984SQL>sele... 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谢谢
展开
 我来答
zy19860714
推荐于2016-11-11
知道答主
回答量:3
采纳率:0%
帮助的人:3.3万
展开全部
这个问题比较隐蔽,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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吴凯磊
推荐于2016-01-07 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.1万
采纳率:83%
帮助的人:1962万
展开全部
Oracle函数to_char转化数字型指定小数点位数的用法
to_char,函数功能,就是将数值型或者日期型转化为字符型。
比如最简单的应用:
/*1.0123--->’1.0123’*/
Select TO_CHAR(1.0123) FROM DUAL
/*123--->’123’*/
Select TO_CHAR(123) FROM DUAL
Oracle中TO_DATE TO_CHAR格式
TO_CHAR 是把日期或数字转换为字符串
TO_CHAR 使用TO_CHAR函数处理数字
TO_CHAR(number, '格式')
TO_CHAR(salary,’$99,999.99’)
; 使用TO_CHAR函数处理日期 TO_CHAR(date,’格式’);
Oracle to_char格式化函数
Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。 注意:所有格式化函数的第二个参数是用于转换的模板。
如果没有使用 FX 选项,to_timestamp 和 to_date 忽略空白。FX 必须做为模板里的第一个条目声明。
反斜杠("\")必须用做双反斜杠("\\"),例如 '\\HH\\MI\\SS'。
双引号('"')之间的字串被忽略并且不被分析。如果你想向输出写双引号,你必须在双引号前面放置一个双反斜杠('\\'),例如 '\\"YYYY Month\\"'。
to_char 支持不带前导双引号('"')的文本,但是在双引号之间的任何字串会被迅速处理并且还保证不会被当作模板关键字解释(例如:'"Hello Year: "YYYY')。
使用 'SG','PL' 或 'MI' 的带符号字并不附着在数字上面;例如,to_char(-12, 'S9999') 生成 ' -12',而 to_char(-12, 'MI9999') 生成 '- 12'。Oracle 里的实现不允许在 9 前面使用 MI,而是要求 9 在 MI 前面。
PL,SG,和 TH 是 Postgres 扩展。
9 表明一个与在 9 字串里面的一样的数字位数。如果没有可用的数字,那么使用一个空白(空格)。
TH 不转换小于零的值,也不转换小数。TH 是一个 Postgres 扩展。
V 方便地把输入值乘以 10^n,这里 n 是跟在 V 后面的数字。to_char 不支持把 V 与一个小数点绑在一起使用(例如. "99.9V99" 是不允许的)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式