在写Oracle的时候,经常做一些日期,字符串或者数字的格式化;下面就是我写的一些笔记:
格式化函数
函数
返回类型
描述
例子
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 位数字。比如(对于 20000 年): to_date('200001131', 'YYYYMMDD') 将会被解释成一个 4 位数字的年份, 最好在年后面使用一个非数字的分隔符,象 to_date('20000-1131', 'YYYY-MMDD') 或 to_date('20000Nov31', '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;
结果是:100000.00
<转载>
to_char(round(number,4)) 取得两位小数
to_char(number,'99990.9999') 取得两位小数
分享到:
相关推荐
系统信息函数、类型转化函数、格式化函数、控制流函数、加密函数、日期和时间函数、字符串函数、聚合函数(常用于group by从句的select查询中)、数学函数
Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数 --unix时间戳与date时间互转 SELECT oracle_to_unix(SYSDATE),unix_to_oracle(1551774286),oracle_to_unix(SYSDATE) FROM dual;
SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- ...
ORACLE函数大全 ________________________________________ 作者:[本站编辑] 来源:[CSDN] 浏览:[ ] SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,...
, 999,999 标定格式化数字中的位置 G 999G999 返回一组通过参数NLS_NUMERIC_CHARACTER设定的分隔符,这是个对语言编程有限定作用的数值 . 9.99 标定格式化数字中的小数点位置 D 9D99 标定小数点(由参数NLS_...
oracle的函数大全
经常为四舍五入的方法烦恼,新的思路重写四舍五入,并可以根据小数位数自动格式化,适合于数值型表格显示,该思路可适用于任何系统或数据库,代码比较乱,欢迎指正。
Oracle 常用函数 包括:日期转换、字符格式化、数字比较、ASC 转换、数字格式化等等。
Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。 注意:所有格式化函数的第二个参数是用于...
ORACLE中科学计数法显示问题的解决,PLSQL显示超长数字的时候显示格式为科学计数法,此文档为解决方法
两个版本的数据库对比,同时支持sqlserver,oracle,MySql ,代码差异高亮...Json XML,SQL 文本格式化 文本差异对比 根据 Word表格生成Model. 比如做接口:人家给你一个word文件,你需要 建模 就方便很多 介绍博客有图片
3.2.2 SQL Plus输出结果的格式化 41 3.2.3 SQL Plus小结 46 3.3 PL/SQL 46 3.3.1 PL/SQL常用开发工具 46 3.3.2 开发一个简单的PL/SQL程序 48 3.4 本章实例 49 3.5 本章小结 50 3.6 习题 50 第二篇 Oracle...
ORACLE数据库智能化管理系统2012 软件介绍 序言 ORACLE数据库管理们: 你们还在为处理日常大量数据,天天写过多的SQL语句而烦恼吗? 还在为由于没有面面具到的软件来汇制想要的日常数据报表而烦恼吗? 还在为查找...
5.5 使用SQL*Plus格式化查询结果 5.5.1 格式化列 5.5.2 定义页与报告的标题和维数 5.5.3 存储和打印结果 第6章 Oracle的基本操作 6.1 Oracle的启动与关闭 6.1.1 启动Oracle数据库 6.1.2 关闭Oracle...
4.7 日期函数(格式化的和按时间排列的) 93 4.7.1 日期函数 93 4.7.2 特殊格式的日期数据类型 94 4.7.3 嵌套函数 94 4.8 连接(ANSI与Oracle对比):内连接、外连接、自连接 95 4.8.1 内连接 95 4.8.2 外连接 98...
5.5 使用SQL*Plus格式化查询结果 5.5.1 格式化列 5.5.2 定义页与报告的标题和维数 5.5.3 存储和打印结果 第6章 Oracle的基本操作 6.1 Oracle的启动与关闭 6.1.1 启动Oracle数据库 6.1.2 关闭Oracle数据库 ...
[三思笔记]日期时间及数字的格式化参数大全.pdf [三思笔记]使用可传输表空间的特性复制数据.pdf [三思笔记]手把手教你用vmware安装oracle10g RAC.pdf [三思笔记]手把手教你用VMware在linux下安装oracle10g RAC.pdf ...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 第1部分 关键的数据库概念 第1章 OracleDatabase11g体系结构 1.1 数据库和实例 1.2 数据库技术 1.2.1 存储数据 1.2.2 数据保护 1.2.3...
7、LOB数据类型用于存储大型的,没有被结构化的数据,例如二进制文件,图片文件,LOB主要分为BLOB和CLOB,BLOB数据类型用于存储二进制对象:图像,音频,视频...CLOB数据类型用于存储字符格式的大型对象 8、ORACLE...