Conversion Functions

乌骏
2023-12-01

一、日期格式说明

类型说明
Cc两位数字的世纪
scc有负号的两位数字的世纪,表示世纪前
Q表示一位数季度
yyyy表示4位数年
iyyy表示4位数年,ISO格式
rrrr表示当前年的4位数字的圆整年
y,yyy有逗号的4位数字年
Yyy年的最后3位数字
Yy年的最后2位数字
Iyy年的最后2位数字,ISO格式
Rr基于当前年的两位数字的圆整年
Y年的最后1位数字
I年的最后1位数字,ISO格式
YEAR年名称为大写字母
Year年名称首为大写字母
Mm两为数字月
MONTH月名称全称,大写字母9个字符,位数不足用空格补
Month月份的名称全程,首字母大写,9个字符,不足补空格
MON月份名称的前3个字母,大写
Mon月份名称的前3个字母,首字大写
RM罗马数字月
Ww年中的2位数字星期
Iw年中的2位数字星期,ISO标准
W月中的一位数字星期
ddd年中的3位数字日
Dd月中的两位数字日
D周中的一位数字日
DAY日的全称,大写字母
Day日的全称,首字母大写
DY日的前三个字母,大写
Dy日的前三个字母,首字母大写
hh24两位数字小时,24小时制
Hh两位数字小时,12小时制
Mi两位数字分钟
Ss两位数字秒
ff[1...9]小数数字秒,小数部分指定
sssss过去12点的秒数
Ms毫秒
Cs厘秒
[-/,.;:]日期时间中的分隔符
TH th数字的后缀
SP,sp拼读数字
SPTH,spthsp和th的组合
Tzh时区小时
tzr时区区域

二、数字格式说明

格式例子说明
,'9999,999'逗号,一般以千分位出现,作为分组符号使用。如果需要您也可以当作是十分位,百分位出现,可以出现N次,视乎数字的大小而定。
变态的例子是 to_char(1234,'9,9,9,9')。
注意事项:只能出现在整数部分。
.'99.99'点号,不要念为"句号",句号是个圆圈,点好只能出现在小数点对应的地方.只能出现一次.
to_char(1234.34,'9,999.99')
注意事项:只能出现在一个地方,就是原来数据小数点位置
$'$999.99'美元.其实你可以放在任意地方(在10G下)
to_char(1234.34,'9,999.$99') 
注意事项:只能出现一次。
0'0999.99'零.在对应位置返回对应的字符,如果没有则以'0'填充。
to_char(1234,'9999.00')='1234.00';
注意事项:这是一个强制的符号,对应位没有,则以'0'填充,这是9很大不同地方
9'999.99'9 在小数位,则表示转换为对应字符,如果没有则以0表示;在整数位,没有对应则不填充字符。
TO_CHAR(123,'999.99')=123.00;
TO_CHAR(123,'99999.9')=123.0;
注意事项:对于0和9而言,如果格式的位数不如数字的位数多,会返回'#'。
譬如to_char(12345,'9999')='#####'
B'B999''B999'
没有其它特别作用,在整数部分最前面加一个空格,可以出现在任意位置.
'S'||TO_CHAR(1234,'99B99')='S 1234';
注意事项:只能出现在整数部位。
C'C9999'在特定的位置返回一个ISO货币符号(就是NLS_ISO_CURRENCY参数所代表的值)
TO_CHAR(1233,'C9999')='CNY1234',这是新的国际标准RMB,关于这个可查询“国际货币符号”
注意事项:只能出现在整数部位第一位。
可以通过alter session set NLS_ISO_CURRENCY='JAPAN';来修改当前会话的设置。
D'999D99'这是“点号”的国际版本(ISO),作用等同于点号,也是只能出现一次。所不同的是,数据库会根据NLS_NUMERIC_CHARACTER的参数值来设置内容。默认的这个值是点号.
注意事项:没有特别需要一般不要用这个格式符号。也不要轻易修改参数值。
也可用alter sesssion set 来修改.
alter session set nls_numeric_characters='!';
to_char(1234.34,'9999d99')=1234!34
EEEE9.9EEEE科学计算符号
TO_CHAR(2008032001,'9.9EEEE')='2.01E+09',由于是科学计算方法,所以小数位前面加一个9或者0即可,多个是没有意义的。
G999G999是逗号(,)的的ISO标准,作为分组符号使用,可以放在多个地方使用.
TO_CHAR(123456,'999G9G99')=123,4,56
注意事项:同第八项 -D, 此外如果要转换出小数点,则要和D配合使用,不能和点号配合。
L'L999'是C的本地版本。可以放在整个格式的最前面和最后面.
TO_CHAR(123456,'999G9G99D00L')=123,4,56.00¥
注意事项:同第七项 C
MI'9999MI'如果是负数,在尾部加上负号(-),如果是正数,则尾巴加上空格
to_char(1234,'9999mi')||'S'||TO_CHAR(-5678,'9999MI') =1234 S5678-
注意事项:只能放在格式尾巴
PR9999PR是表达负数的另外一种方式。如果是正数,则头部加上空格;如果是负数,则用小简括号<>把数字包起来.
TO_CHAR(-1234.89,'9G999D00PR')=<1,234.89>
注意事项:同上
RN(rn)RN(rn)把整数(1-3999)转换为罗马字符。RN表示转为大写,rn表示小写的.
declare
i int;
begin
for i in 1..20 loop
dbms_output.put_line(to_char(i,'RN'));
end loop;
end;
注意事项:只能自己使用,不能和其它符号组合使用。
S'9999S'是以上两个符号的综合改进版本。为整数加一个正号+,为负数加一个符号-。S在前则加在前,在后则在后.
TO_CHAR(-1234,'S9999')=-1234;
TO_CHAR(1234,'S9999')=+1234
TMTM9/TMe使用这个参数等于没有用参数to_char(number)一样,应为'tm9'是默认的格式参数。
to_char(1234,'tme')=1234
注意事项:格式要么是TM9,要么是TME。
当数字长度超过64位时候,TM9的输出等同于TME的输出。
UU999双币符号,例如欧元.作用同11的L
TO_CHAR(999,'U999')=¥999
注意事项:通过NLS_DUAL_CURRENCY 控制
V999V9这是个比较古怪,又不是很常使用的符号。它的作用在于做一个计算。
例如TO_CHAR(N,'999V9'),以p表示V的位置,则该表达式=to_char(N×(10的P-1次方))。但是9个数又必须保证大于等于乘积之后表示的位数。
TO_CHAR(5,'9V')=5*1=5;
TO_CHAR(5,'9V9')=5*10=50
TO_CHAR(5,'9V99')=500
TO_CHAR(50,'9V99')='######' 9的个数不够
注意事项:格式中不能和小数表达写在一起,但是可以混合货币等。
Xxxxx转换为16进制。
TO_CHAR(100,'XX')= 64
注意事项:数值必须是大于等于0的整数。前面只能和0或者FM组合使用。

三、隐式转换

  1. 日期:样式根据nls_date_format参数,一致可相互隐式转换
    • varchar2 -> to date
    • date -> to varchar2
  2. 数字:纯数字格式可以相互转换
    • varchar2 -> to number
    • number -> to varchar2

四、转换函数

函数说明
TO_CHAR语法:TO_CHAR(datatime|interval, format)
说明:将NUMBER或DATE类型的值转换为字符串
例句:
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;
SELECT TO_CHAR(123456.78,'999,999.99') FROM DUAL;
TO_DATE语法:TO_DATE(str, format)
说明:将NUMBER、CHAR或VARCHAR2转换为DATE类型值
例句:
SELECT TO_DATE('1988-07-19','YYYY-MM-DD') FROM DUAL;
TO_NUMBER语法:TO_NUMBER(str, format)
说明:将CHAR或VARCHAR2转换为一个数值
例句:
SELECT TO_NUMBER('123,456.78','999,999.99') FROM DUAL;

 类似资料:

相关阅读

相关文章

相关问答