類型
說明
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,spth
sp和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')
注意事項:隻能出現一次。
'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'
沒有其它特别作用,在整數部分最前面加一個空格,可以出現在任意位置.
'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';來修改目前會話的設定。
'999D99'
這是“點号”的國際版本(ISO),作用等同于點号,也是隻能出現一次。所不同的是,資料庫會根據NLS_NUMERIC_CHARACTER的參數值來設定内容。預設的這個值是點号.
注意事項:沒有特别需要一般不要用這個格式符号。也不要輕易修改參數值。
也可用alter sesssion set 來修改.
alter session set nls_numeric_characters='!';
to_char(1234.34,'9999d99')=1234!34
EEEE
9.9EEEE
科學計算符号
TO_CHAR(2008032001,'9.9EEEE')='2.01E+09',由于是科學計算方法,是以小數位前面加一個9或者0即可,多個是沒有意義的。
G
999G999
是逗号(,)的的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-
注意事項:隻能放在格式尾巴
PR
9999PR
是表達負數的另外一種方式。如果是正數,則頭部加上空格;如果是負數,則用小簡括号<>把數字包起來.
TO_CHAR(-1234.89,'9G999D00PR')=<1,234.89>
注意事項:同上
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
TM
TM9/TMe
使用這個參數等于沒有用參數to_char(number)一樣,應為'tm9'是預設的格式參數。
to_char(1234,'tme')=1234
注意事項:格式要麼是TM9,要麼是TME。
當數字長度超過64位時候,TM9的輸出等同于TME的輸出。
U
U999
雙币符号,例如歐元.作用同11的L
TO_CHAR(999,'U999')=¥999
注意事項:通過NLS_DUAL_CURRENCY 控制
V
999V9
這是個比較古怪,又不是很常使用的符号。它的作用在于做一個計算。
例如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的個數不夠
注意事項:格式中不能和小數表達寫在一起,但是可以混合貨币等。
X
xxxx
轉換為16進制。
TO_CHAR(100,'XX')= 64
注意事項:數值必須是大于等于0的整數。前面隻能和0或者FM組合使用。
1、日期:樣式根據nls_date_format參數,一緻可互相隐式轉換
a) varchar2 -> to date
b) date -> to varchar2
2、數字:純數字格式可以互相轉換
a) varchar2 -> to number
b) number -> to varchar2
函數
TO_CHAR
文法:TO_CHAR(datatime|interval, format)
說明:将NUMBER或DATE類型的值轉換為字元串
例句:
TO_DATE
文法:TO_DATE(str, format)
說明:将NUMBER、CHAR或VARCHAR2轉換為DATE類型值
TO_NUMBER
文法:TO_NUMBER(str, format)
說明:将CHAR或VARCHAR2轉換為一個數值