Oracle格式化数字和日期的方法
http://blog.csdn.net/szwangdf/article/details/1570005
to_char,函數功能,就是將數值型或者日期型轉化為字符型。
比如最簡單的應用:
/*1.0123--->'1.0123'*/Select?TO_CHAR(1.0123)?FROM?DUAL
/*123--->'123'*/
Select?TO_CHAR(123)?FROM?DUAL
?接下來再看看下面:
/*0.123?--->?'.123'?*/SELEC?TO_CHAR(0.123)?FROM?DUAL
?上面的結果 '.123' 在大多數情況下都不是我們想要的結果,我們想要的應該是 '0.123'。
我們來看一下to_char函數的具體用法:
TO_CHAR ( n [, fmt [, 'nlsparam']] ) 該函數將NUMBER類型的n按數值格式fmt轉換成VARCHAR2類型的值。'nlsparams'指定由數值格式的元素返回的字符,包括:.小數點字符
.組分隔符
.本地錢幣符號
.國際錢幣符號
變元的形式為:
'NLS_NUMERIC_CHARACTERS="dg"?NLS_CURRENCY="tcxt"?NLS_ISO_CURRENCY=territory'
其中d為小數點字符,g為組分隔符。
例?:TO_CHAR?(17145,'L099G999','NLS_NUMERIC_CHARACTERS=".,"?NLS_CURRENCY="NUD"')=NUD017,145
通過上面的了解,再查看fmt的一些格式,我們可以用以下表達式得到'0.123'的值:
/*0.123?--->?'?0.123'?*/?Select?TO_CHAR(0.123,'0.999')?FROM?DUAL
/*100.12?--->?'######'?*/?
Select?TO_CHAR(100.12,'0.999')?FROM?DUAL
/*1.12?--->?'?1.120'?*/?
Select?TO_CHAR(1.12,'0.999')?FROM?DUAL
?' 0.123'是出來了,可是前面又多了一個空格。
對于 100.12 的值卻是######,以及'1.12'的值變成了 '1.120'。
我們重新確定一個新的需求:
1、去空格
2、小數點最多4位,最少保留2位。
??? 1--->'1.00';1.1--->'1.00';1.12-->'1.12';1.1234--->'1.1234';
??? 1.12345--->'1.1235'
最終實現如下:
/*??FM?:除空格??
??9999999.0099:允許小數點左邊最大正數為7位,小數點右邊最少2位,最多4位,且在第5位進行四舍五入
*/?
Select?TO_CHAR(123.0233,'FM9999999.0099')?FROM?DUAL
?
===========
http://www.5ienet.com/note/html/numdate/oracle-number-format.shtml
二、 數值
格式串 說明及示例
---------- -----------------------------------------------------------
, 在指定位置附加逗號(便于閱讀),注意逗號不能出現于格式字串首位,并且對于小數點的數字無效
例如:
SQL> select to_char(389999.00,¨99,999,999¨) from dual;
TO_CHAR(389
-----------
389,999
. 按指定格式顯示小數點及小數點后位置(指定數字沒有小數的話,以0補足)
例如:
SQL> select to_char(18,¨999.000¨) from dual;
TO_CHAR(
--------
18.000
$ 字符前附加$符
例如:
SQL> select to_char(18,¨$999¨) from dual;
TO_CH
-----
$18
SQL> select to_char(18,¨999$¨) from dual;
TO_CH
-----
$18
0 字符頭部或尾部附加0
例如:
SQL> select to_char(18.0,¨0999¨) from dual;
TO_CH
-----
0018
9 與上類似以指定長度返回數值格式,不過如果被格式化的數值長度短于指定格式,則以空格補足。
例如:
SQL> select to_char(18.0,¨9999¨) from dual;
TO_CH
-----
18
B 當整數部分是0時返回空格(即使存在0格式串也忽略)。
例如:
SQL> select to_char(0.18,¨B0999¨) from dual;
TO_CH
-----
C 返回ISO默認指定的標識(默認標識可參見:NLS_ISO_CURRENCY)
例如:
SQL> select to_char(128.18,¨C999999.99¨) from dual;
TO_CHAR(128.18,¨C
-----------------
CNY128.18
D 返回指定的小數點形式(默認符:.)(默認標識可參見:NLS_NUMERIC_CHARACTER)
例如:
SQL> select to_char(128.18,¨9999D99¨) from dual;
TO_CHAR(
--------
128.18
SQL> alter session set nls_numeric_characters=¨:"¨;
會話已更改。
SQL> select to_char(128.18,¨9999D99¨) from dual;
TO_CHAR(
--------
128:18
EEEE 使用科學記數法顯示
例如:
SQL> select to_char(128.18,¨9EEEE¨) from dual;
TO_CHAR
-------
1E+02
G 與逗號功能類似,用指定字符分隔字串(默認符:,)(默認標識可參見:NLS_NUMERIC_CHARACTER)。
例如:
SQL> select to_char(11128.18,¨99G999¨) from dual;
TO_CHAR
-------
11,128
SQL> alter session set nls_numeric_characters=¨:"¨;
會話已更改。
SQL> select to_char(11128.18,¨99G999¨) from dual;
TO_CHAR
-------
11"128
L 指定位置顯示本地默認符號(默認值見:NLS_CURRENCY)
例如:
SQL> select to_char(999,¨L999¨) from dual;
TO_CHAR(999,¨L
--------------
¥999
SQL> alter session set nls_currency=¨haha¨;
會話已更改。
SQL> select to_char(999,¨L999¨) from dual;
TO_CHAR(999,¨L
--------------
haha999
MI 負值在尾部顯示-號,正值在尾部附加空格。另:該格式符必須處于格式串尾部
例如:
SQL> select to_char(-18,¨999MI¨) from dual;
TO_C
----
18-
SQL> select to_char(18,¨999MI¨) from dual;
TO_C
----
18
PR 負值以<>尖括號包括,正值在頭尾部各附加空格。另:該格式符必須處于格式串尾部
例如:
SQL> select to_char(-18,¨999PR¨) from dual;
TO_CH
-----
<18>
SQL> select to_char(18,¨999PR¨) from dual;
TO_CH
-----
18
RN/rn 返回羅馬數字形式。注:大寫格式串返回大寫羅馬數字,小寫格式串返回小寫羅馬數字:)
例如:
SQL> select to_char(18,¨RN¨) from dual;
TO_CHAR(18,¨RN¨
---------------
XVIII
SQL> select to_char(18,¨rn¨) from dual;
TO_CHAR(18,¨RN¨
---------------
xviii
S 顯示數值正負值符號。可出現于格式串首部或尾部。
例如:
SQL> select to_char(18,¨S9999¨) from dual;
TO_CH
-----
+18
SQL> select to_char(18,¨9999S¨) from dual;
TO_CH
-----
18+
TM 字符格式轉換(標準數值與科學計數法),可以通過附加9或e控制輸出,默認是tm9,如果輸出超過64個字符,則數據庫自動轉換成科學計數法顯示。該格式串不能與其它的數值型格式串同時使用。
例如:
SQL> select TO_CHAR(128,¨tme¨) from dual;
TO_CHAR(128,¨TME¨)
----------------------------------------------------------------
1.28E+02
SQL> select TO_CHAR(1.28E+02,¨tm¨) from dual;
TO_CHAR(1.28E+02,¨TM¨)
----------------------------------------------------------------
128
U 與L類似,在指定位置顯示貨幣單位(默認值見:NLS_DUAL_CURRENCY)
例如:
SQL> select TO_CHAR(128,¨999U¨) from dual;
TO_CHAR(128,¨9
--------------
128 ¥
SQL> alter session set nls_dual_currency=¨aaa¨;
會話已更改。
SQL> select TO_CHAR(128,¨999U¨) from dual;
TO_CHAR(128,¨9
--------------
128aaa
V 數值+10的n次方,n=V后9的個數
例如:
SQL> select TO_CHAR(128,¨999V999¨) from dual;
TO_CHAR
-------
128000
X 返回指定數值對應的16進制數,必須是正數。如果指定數值非整的話,oracle會自動round取整。
例如:
SQL> select TO_CHAR(16,¨XXXX¨) from dual;
TO_CH
-----
10
| (2)日期及時間格式續 |
| [君三思] 2007-12-14 |
SSSSS 返回自午夜到指定時間共逝去的秒數(范圍:0-86399)
DL 根據數據庫nls_date_format參數中的設置及nls_language,nls_territory參數中的格式返回長日期形式,有點兒繞,呵呵你試試就知道了
DS 與上相同返回短日期形式
TS 與DL,DS參數類似,不過ts返回的是時間
DY 返回日期簡寫
RR RR 參數與YY參數很類似,但取值規則略有不同:
RRRR 輸入值可以是2位也可以是4位,2位時規則與RR完全相同。
FM 填充模式。 Oracle 默認使用空白字符填充被格式化的元素,確保寬度一致。例如:
如上例可以看到,不管幾月份,其返回所占長度是一致的。
FX 精確匹配。使用FX參數之后:
X 本地的默認分隔符
以下四項為時區相關參數, 明確表示某一個時區,應該聯合使用 TZH TZM 或者 TZR TZDTZD /TZR
TZH/TZM
應用示例:1、 與指定日期在同一周,周1的日期是:
2、 指定日期當月最后一個星期天:
3、 今年第127天是幾號:
|
?
===
http://www.5ienet.com/note/html/numdate/oracle-date-time-format(1).shtml
| (1)日期及時間格式 |
| [君三思] 2007-12-13 |
| 經常遇到有朋友問詢關于日期時間格式化的問題(或可以通過格式化輕易解決),經過參考Oracle SQL Reference官方文檔,并附上詳細的應用示例綜合成文,希望能夠對大家學習和使用有所幫助。本篇可視為"oracle著名及非著名函數介紹"的補充! 環境:
一、 日期及時間格式串 說明及示例 ---------- ----------------------------------------------------------- -/,.;: 指定返回字串分隔符
AD/A.D. 公元標識
BC/B.C. 公元標識
AM/A.M. 子午線標識
PM/P.M. 子午線標識
CC/SCC 世紀標識,S前綴指定如遇公元前的顯示,會在顯示前加(-)提示:
D 指定日期在周中的數值(范圍:1-7)
DD 指定日期在當月中的天數(范圍:1-31)
DDD 指定日期在當年中的天數(范圍:1-366)
DAY 指定日期在周中的名稱
MON 返回指定日期的月份簡寫
MONTH 返回指定日期的月份全稱
YEAR/SYEAR 返回字符型年,此處s前綴與SCC處相同
YYYY/SYYYY 返回數字型年,此處s前綴與SCC處相同
MM 返回指定日期的月份(范圍:1-12)
HH 小時(范圍:1-12)
HH12 小時(范圍:1-12)
HH24 小時(范圍:0-23)
MI 返回指定時間的分鐘(范圍0-59)
SS 返回指定時間的秒數(范圍:0-59)
FF[1-9] 返回毫秒數,可指定長度1-9,默認6位
Y,YYY 返回有逗號分隔顯示的年
I/IY/IYY/IYYY 返回ISO標準年
Y/YY/YYY 以指定長度返回日期的年份
W 返回指定日期在當月中的第X周(范圍:1-5)
WW 返回指定日期在當年中的第X周(范圍:1-53)
IW 指定日期在當年中第X周(范圍:1-52或1-53(潤年))
RM 以羅馬數字形式返回月份(范圍I-XII)
Q 返回指定日期的季度(范圍:1-4)
J 自公元前 4712 年1月1日到指定日期的總天數
|
總結
以上是生活随笔為你收集整理的Oracle格式化数字和日期的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: autosys file watcher
- 下一篇: instance of 泛型