Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1244589
  • 博文数量: 350
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5668
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-23 17:53
文章分类

全部博文(350)

文章存档

2013年(350)

分类: Oracle

2013-04-24 16:26:32

经常遇到有朋友问询关于日期时间格式化的问题(或可以通过格式化轻易解决),经过参考Oracle SQL Reference官方文档,并附上详细的应用示例综合成文,希望能够对大家学习和使用有所帮助。本篇可视为"oracle著名及非著名函数介绍"的补充!

日期时间及数字的格式化参数大全(1)

日期时间及数字的格式化参数大全(2)

日期时间及数字的格式化参数大全(3)


一、数值

格式串 说明及示例

---------- -----------------------------------------------------------

, 在指定位置附加逗号(便于阅读),注意逗号不能出现于格式字串首位,并且对于小数点的数字无效

例如:

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

阅读(1309) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~