天天看點

轉換函數

類型

說明

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轉換為一個數值