to_char函数疑问
发布网友
发布时间:2022-04-23 14:30
我来回答
共2个回答
热心网友
时间:2022-04-10 16:53
这个问题比较隐蔽,to_char这个类型函数可以处理字符,时间、数字格式类型的数据,但处理转义成对应的格式必须符合该类型的规则,
1.select to_char(2011-6-21) from al 处理时候,先处理2011-6-21 数据库把认为是一个数字,优先处理加减乘除,相减的结果就是1984在转义成字符也就是1984了;
2.对于select to_char(2011-6-21,'yyyymmdd') from al 这个类型的报错,是应为从number转义到字符没有'yyyymmdd'这中转义格式,详细的转义格式请参考sql reference
热心网友
时间:2022-04-10 18:11
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" 是不允许的)。