格式化函数
函数
返回类型
描述
例子
to_char
(timestamp
, text
)
|
text
|
把时间戳转换成字串 |
to_char(current_timestamp, 'HH12:MI:SS')
|
to_char
(interval
, text
)
|
text
|
把时间间隔转为字串 |
to_char(interval '15h 2m 12s', 'HH24:MI:SS')
|
to_char
(int
, text
)
|
text
|
把整数转换成字串 |
to_char(125, '999')
|
to_char
(double precision
, text
)
|
text
|
把实数/双精度数转换成字串 |
to_char(125.8, '999D9')
|
to_char
(numeric
, text
)
|
text
|
把 numeric 转换成字串 |
to_char(numeric '-125.8', '999D99S')
|
to_date
(text
, text
)
|
date
|
把字串转换成日期 |
to_date('05 Dec 2000', 'DD Mon YYYY')
|
to_timestamp
(text
, text
)
|
date
|
把字串转换成时间戳 |
to_timestamp('05 Dec 2000', 'DD Mon YYYY')
|
to_number
(text
, text
)
|
numeric
|
把字串转换成 numeric |
to_number('12,454.8-', '99G999D9S')
|
用于日期/时间格式化的模板
模板
描述
HH
|
一天的小时数 (01-12) |
HH12
|
一天的小时数 (01-12) |
HH24
|
一天的小时数 (00-23) |
MI
|
分钟 (00-59) |
SS
|
秒 (00-59) |
MS
|
毫秒 (000-999) |
US
|
微秒 (000000-999999) |
SSSS
|
午夜后的秒 (0-86399) |
AM
或 A.M.
或 PM
或 P.M.
|
正午标识(大写) |
am
或 a.m.
或 pm
或 p.m.
|
正午标识(小写) |
Y,YYY
|
带逗号的年(4 和更多位) |
YYYY
|
年(4和更多位) |
YYY
|
年的后三位 |
YY
|
年的后两位 |
Y
|
年的最后一位 |
BC
或 B.C.
或 AD
或 A.D.
|
纪元标识(大写) |
bc
或 b.c.
或 ad
或 a.d.
|
纪元标识(小写) |
MONTH
|
全长大写月份名(空白填充为9字符) |
Month
|
全长混合大小写月份名(空白填充为9字符) |
month
|
全长小写月份名(空白填充为9字符) |
MON
|
大写缩写月份名(3字符) |
Mon
|
缩写混合大小写月份名(3字符) |
mon
|
小写缩写月份名(3字符) |
MM
|
月份号(01-12) |
DAY
|
全长大写日期名(空白填充为9字符) |
Day
|
全长混合大小写日期名(空白填充为9字符) |
day
|
全长小写日期名(空白填充为9字符) |
DY
|
缩写大写日期名(3字符) |
Dy
|
缩写混合大小写日期名(3字符) |
dy
|
缩写小写日期名(3字符) |
DDD
|
一年里的日子(001-366) |
DD
|
一个月里的日子(01-31) |
D
|
一周里的日子(1-7;周日=1) |
W
|
一个月里的周数(1-5)(第一周从该月第一天开始) |
WW
|
一年里的周数(1-53)(第一周从该年的第一天开始) |
IW
|
ISO 一年里的周数(第一个星期四在第一周里) |
CC
|
世纪(2 位) |
J
|
儒略日(自公元前4712年1月1日来的天数) |
Q
|
季度 |
RM
|
罗马数字的月份(I-XII;I=JAN)(大写) |
rm
|
罗马数字的月份(I-XII;I=JAN)(小写) |
TZ
|
时区字串 (大写) |
tz
|
时区字串 (小写) |
日期/时间格式化的模板模式修饰词
修饰词
描述
例子
FM
前缀 |
填充模式(抑制填充空白和零) |
FMMonth
|
TH
后缀 |
大写顺序数后缀 |
DDTH
|
th
后缀 |
小写顺序数后缀 |
DDth
|
FX
前缀 |
固定格式全局选项(见用法须知) |
>FX Month DD Day
|
SP
suffix |
拼写模式(还未实现) |
DDSP
|
FM
抑制前导的零或尾随的空白, 如果没有使用它的话,会在输出中增加这些填充最终把输出变成固定宽度的模式。
如果没有使用 FX
选项, to_timestamp
和 to_date
在转换字串的时候忽略多个空白。
FX
必须做为模板里的第一个项声明。 比如 to_timestamp('2000 JUN', 'YYYY MON')
是正确的,
to_timestamp('2000 JUN', 'FXYYYY MON')
会返回一个错误,因为to_timestamp
只预料会有一个空白。
在 to_char
模板 里可以有普通文本,并且它们会被照字输出。 你可以把一个字串放到双引号里强迫它解释成一个文本, 即使它里面包含模式关键字也如此。比如,在
'"Hello Year "YYYY'
, YYYY
将被年份数据代替,但是Year
里单独 的 Y
不会。
如果你想在输出里有双引号,那么你必须在它们 前面放双反斜杠,比如 '\\"YYYY Month\\"'
. (需要两个反斜杠是因为反斜杠在字串常量里已经有特殊含义了。)
如果你使用的年份长于 4 位字符,那么用 YYYY
从字串向timestamp
或者date
做转换时要受到限制。 你必须在
YYYY
后面使用一些非数字字符或者模板, 否则年份总是解释为 4 位数字。比如(对于 2000 年): to_date('20001121', 'YYYYMMDD')
将会被解释成一个 4 位数字的年份, 最好在年后面使用一个非数字的分隔符,象
to_date('2000-1121', 'YYYY-MMDD')
或 to_date('2000Nov31', 'YYYYMonDD')
。
将字串转化为timestamp
时, 毫秒(MS
)和微秒(US
)都是用字串 的小数点后面的部分转换的。比如
to_timestamp('12:3', 'SS:MS')
不是 3 毫秒, 而是 300,因为转换把它看做 12 + 0.3 秒。 这意味着对于格式 'SS:MS'而言,输入值为
12:3
或 12:30
或12:300
声明了相同数目的 毫秒。对于三毫秒,你必须使用 12:003
,那么转换会把它看做 12 + 0.003 = 12.003 秒。
用于数值格式化的模板模式
模板
描述
9
|
带有指定数值位数的值 |
0
|
带前导零的值 |
.
(句点) |
小数点 |
,
(逗号) |
分组(千)分隔符 |
PR
|
尖括号内负值 |
S
|
带符号的数值(使用区域设置) |
L
|
货币符号(使用区域设置) |
D
|
小数点(使用区域设置) |
G
|
分组分隔符(使用区域设置) |
MI
|
在指明的位置的负号(如果数字 <> |
PL
|
在指明的位置的正号(如果数字 > 0) |
SG
|
在指明的位置的正/负号 |
RN
|
罗马数字(输入在 1 和 3999 之间) |
TH
或 th
|
序数后缀 |
V
|
移动指定位(小数)(参阅注解) |
EEEE
|
科学记数。(现在还未实现) |
to_char 例子
表达式
结果
to_char(current_timestamp, 'Day, DD HH12:MI:SS')
|
'Tuesday , 06 05:39:18'
|
to_char(current_timestamp, 'FMDay, FMDD HH12:MI:SS')
|
'Tuesday, 6 05:39:18'
|
to_char(-0.1, '99.99')
|
' -.10'
|
to_char(-0.1, 'FM9.99')
|
'-.1'
|
to_char(0.1, '0.9')
|
' 0.1'
|
to_char(12, '9990999.9')
|
' 0012.0'
|
to_char(12, 'FM9990999.9')
|
'0012.'
|
to_char(485, '999')
|
' 485'
|
to_char(-485, '999')
|
'-485'
|
to_char(485,'9 9 9')
|
' 4 8 5'
|
to_char(1485, '9,999')
|
' 1,485'
|
to_char(1485, '9G999')
|
' 1 485'
|
to_char(148.5, '999.999')
|
' 148.500'
|
to_char(148.5, 'FM999.999')
|
'148.5'
|
to_char(148.5, 'FM999.990')
|
'148.500'
|
to_char(148.5, '999D999')
|
' 148,500'
|
to_char(3148.5, '9G999D999')
|
' 3 148,500'
|
to_char(-485, '999S')
|
'485-'
|
to_char(-485, '999MI')
|
'485-'
|
to_char(485, '999MI')
|
'485 '
|
to_char(485, 'FM999MI')
|
'485'
|
to_char(485, 'PL999')
|
'+485'
|
to_char(485, 'SG999')
|
'+485'
|
to_char(-485, 'SG999')
|
'-485'
|
to_char(-485, '9SG99')
|
'4-85'
|
to_char(-485, '999PR')
|
'<485>'
|
to_char(485, 'L999')
|
'DM 485
|
to_char(485, 'RN')
|
' CDLXXXV'
|
to_char(485, 'FMRN')
|
'CDLXXXV'
|
to_char(5.2, 'FMRN')
|
'V'
|
to_char(482, '999th')
|
' 482nd'
|
to_char(485, '"Good number:"999')
|
'Good number: 485'
|
to_char(485.8, '"Pre:"999" Post:" .999')
|
'Pre: 485 Post: .800'
|
to_char(12, '99V999')
|
' 12000'
|
to_char(12.4, '99V999')
|
' 12400'
|
to_char(12.45, '99V9')
|
' 125'
|
例如:
想把一个带小数点的Number型转换成String型的话:
select TO_CHAR(100000.0, 'FM999,999,999,990.90') from dual;
结果是:100,000.00
说明:FM前缀的作用是去除首尾的空字符或0,如果select TO_CHAR(100000.0, 'FM999,999,999,999.99') from dual;
结果是:100,000.
日期格式化:
Sql代码
SELECT TO_CHAR(sysdate,'YYYY"年"MM"月"DD"日"') FROM dual;
SELECT TO_CHAR(sysdate,'YYYY"年"MM"月"DD"日"') FROM dual;
附:oracle补零
1.前端补0:
Sql代码
select lpad('345',8,'0') from dual;
select to_char('345','00000000') from dual;
select lpad('345',8,'0') from dual; select to_char('345','00000000') from dual;
2.后端补0:
Sql代码
select rpad('345',8,'0') from dual;
select rpad('345',8,'0') from dual;
相关推荐
例如,通过使用这些函数,我们可以快速地计算平均值(AVG)、最大值(MAX)、最小值(MIN)等统计信息,或者处理和格式化日期和字符串数据。理解并熟练运用Oracle的内置函数是每个数据库管理员和开发者必备的技能之...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
- **Oracle**: 使用`TO_CHAR`函数结合相应的格式化字符串。 - **SQL Server**: 使用`DATEPART`函数。 4. **四舍五入/截断日期** - **Oracle**: 使用`ROUND`或`TRUNC`函数。 - **SQL Server**: 使用`CONVERT`...
- `TO_CHAR()`: 将日期、数字等转换为字符串格式。 - `TO_DATE()`: 将字符串转换为日期格式,需指定日期格式模型。 - `TO_NUMBER()`: 将字符串转换为数字。 6. **数学函数** - `SQRT()`: 计算平方根。 - `MOD...
ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...
- **TO_CHAR**:将日期或数字转换为字符串。 - **TO_DATE**:将字符串转换为日期。 - **TO_NUMBER**:将字符串转换为数字。 6. **其他辅助函数** - **DECODE**:多路条件判断函数。 - **GREATEST**:返回多个值...
`来改变会话的日期显示格式。 ### 6. NULL值处理 - **NULL值转换**: 使用`NVL(column, default_value)`函数可以将NULL值转换为指定的默认值。 ### 7. 复杂查询技巧 - **分页查询**: 通过子查询结合ROWNUM实现对...
可以使用固定宽度的字体和格式化选项来实现报表的定长输出。例如,在报表设计阶段,可以通过精确控制列宽和单元格间距来确保输出的稳定性。 #### 59. Developer/2000 FROMS4.5中的"宏"代换 宏可以用来定义一组命令...
NUMBER(P,S) P:精度:整个的有效数位(从左边开始第一个不为0的数字起) S:刻度,可选(小数点后面的保留位数) BINARY_INTEGER:保存整数. 和NUMBER的底层的保存方式不同, BINARY_INTEGER为2进制保存,NUMBER 需要...
- PL/SQL提供了一组丰富的内置函数,涵盖了字符串处理、数学运算、日期时间处理等多个方面。 #### 第三章:PL/SQL数据类型 **一、预定义数据类型** 1. **数字型**: - `NUMBER`:用于表示数值,可以指定精度和...
这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。 CursorType Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括...