发布时间:2025-12-10 11:33:48 浏览次数:14
http://blog.csdn.net/szwangdf/article/details/1570005
to_char,函数功能,就是将数值型或者日期型转化为字符型。
比如最简单的应用:
/*1.0123--->'1.0123'*/接下来再看看下面:
/*0.123 ---> '.123' */上面的结果 '.123' 在大多数情况下都不是我们想要的结果,我们想要的应该是 '0.123'。
我们来看一下to_char函数的具体用法:
TO_CHAR ( n [, fmt [, 'nlsparam']] ) 该函数将NUMBER类型的n按数值格式fmt转换成VARCHAR2类型的值。'nlsparams'指定由数值格式的元素返回的字符,包括:通过上面的了解,再查看fmt的一些格式,我们可以用以下表达式得到'0.123'的值:
/*0.123 ---> ' 0.123' */' 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'
最终实现如下:
/*
===========
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例如:
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例如:
SQL> select to_char(18.0,¨0999¨) from dual;
TO_CH
-----
0018例如:
SQL> select to_char(18.0,¨9999¨) from dual;
TO_CH
-----
18例如:
SQL> select to_char(0.18,¨B0999¨) from dual;
TO_CH
-----例如:
SQL> select to_char(128.18,¨C999999.99¨) from dual;
TO_CHAR(128.18,¨C
-----------------
CNY128.18例如:
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例如:
SQL> select to_char(128.18,¨9EEEE¨) from dual;
TO_CHAR
-------
1E+02例如:
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例如:
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例如:
SQL> select to_char(-18,¨999MI¨) from dual;
TO_C
----
18-
SQL> select to_char(18,¨999MI¨) from dual;
TO_C
----
18例如:
SQL> select to_char(-18,¨999PR¨) from dual;
TO_CH
-----
<18>
SQL> select to_char(18,¨999PR¨) from dual;
TO_CH
-----
18例如:
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例如:
SQL> select to_char(18,¨S9999¨) from dual;
TO_CH
-----
+18
SQL> select to_char(18,¨9999S¨) from dual;
TO_CH
-----
18+例如:
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例如:
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例如:
SQL> select TO_CHAR(128,¨999V999¨) from dual;
TO_CHAR
-------
128000例如:
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日到指定日期的总天数
|