oracle to_char函数使用

Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。

注意:所有格式化函数的第二个参数是用于转换的模板。

表 5-7. 格式化函数

函数 返回 描述 例子
to_char(timestamp, text) text 把 timestamp 转换成 string to_char(timestamp ‘now‘,‘HH12:MI:SS‘)
to_char(int, text) text 把 int4/int8 转换成 string to_char(125, ‘999‘)
to_char(float, text) text 把 float4/float8 转换成 string to_char(125.8, ‘999D9‘)
to_char(numeric, text) text 把 numeric 转换成 string to_char(numeric ‘-125.8‘, ‘999D99S‘)
to_date(text, text) date 把 string 转换成 date to_date(‘05 Dec 2000‘, ‘DD Mon YYYY‘)
to_timestamp(text, text) date 把 string 转换成 timestamp to_timestamp(‘05 Dec 2000‘, ‘DD Mon YYYY‘)
to_number(text, text) numeric 把 string 转换成 numeric to_number(‘12,454.8-‘, ‘99G999D9S‘)

表 5-8. 用于 date/time 转换的模板

模板 描述
HH 一天的小时数 (01-12)
HH12 一天的小时数 (01-12)
HH24 一天的小时数 (00-23)
MI 分钟 (00-59)
SS 秒 (00-59)
SSSS 午夜后的秒 (0-86399)
AM or A.M. or PM or P.M. 正午标识(大写)
am or a.m. or pm or p.m. 正午标识(小写)
Y,YYY 带逗号的年(4 和更多位)
YYYY 年(4和更多位)
YYY 年的后三位
YY 年的后两位
Y 年的最后一位
BC or B.C. or AD or A.D. 年标识(大写)
bc or b.c. or ad or 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;SUN=1)
W 一个月里的周数
WW 一年里的周数
CC 世纪(2 位)
J Julian 日期(自公元前4712年1月1日来的日期)
Q 季度
RM 罗马数字的月份(I-XII;I=JAN)-大写
rm 罗马数字的月份(I-XII;I=JAN)-小写

所有模板都都允许使用前缀和后缀修改器。模板里总是允许使用修改器。前缀 ‘FX‘ 只是一个全局修改器。

表 5-9. 用于日期/时间模板 to_char() 的后缀

后缀 描述 例子
FM 填充模式前缀 FMMonth
TH 大写顺序数后缀 DDTH
th 小写顺序数后缀 DDTH
FX 固定模式全局选项(见下面) FX Month DD Day
SP 拼写模式(还未实现) DDSP

用法须知:

  • 如果没有使用 FX 选项,to_timestamp 和 to_date 忽略空白。FX 必须做为模板里的第一个条目声明。
  • 反斜杠("\")必须用做双反斜杠("\\"),例如 ‘\\HH\\MI\\SS‘。
  • 双引号(‘"‘)之间的字串被忽略并且不被分析。如果你想向输出写双引号,你必须在双引号前面放置一个双反斜杠(‘\\‘),例如 ‘\\"YYYY Month\\"‘
  • to_char 支持不带前导双引号(‘"‘)的文本,但是在双引号之间的任何字串会被迅速处理并且还保证不会被当作模板关键字解释(例如:‘"Hello Year: "YYYY‘)。

表 5-10. 用于 to_char(numeric) 的模板

模板 描述
9 带有指定位数的值
0 前导零的值
. (句点) 小数
, (逗号) 分组(千)分隔符
PR 尖括号内负值
S 带负号的负值(使用本地化)
L 货币符号(使用本地化)
D 小数点(使用本地化)
G 分组分隔符(使用本地化)
MI 在指明的位置的负号(如果数字 < 0)
PL 在指明的位置的正号(如果数字 > 0)
SG 在指明的位置的正/负号
RN 罗马数字(输入在 1 和 3999 之间)
TH or th 转换成序数
V 移动 n 位(小数)(参阅注解)
EEEE 科学记数。现在不支持。

用法须知:

  • 使用 ‘SG‘,‘PL‘ 或 ‘MI‘ 的带符号字并不附着在数字上面;例如,to_char(-12, ‘S9999‘) 生成 ‘ -12‘,而 to_char(-12, ‘MI9999‘) 生成 ‘- 12‘Oracle 里的实现不允许在 9 前面使用 MI,而是要求 9 在 MI 前面。
  • PLSG,和 TH 是 Postgres 扩展。
  • 9 表明一个与在 9 字串里面的一样的数字位数。如果没有可用的数字,那么使用一个空白(空格)。
  • TH 不转换小于零的值,也不转换小数TH 是一个 Postgres 扩展。
  • V 方便地把输入值乘以 10^n,这里 n 是跟在 V 后面的数字。to_char 不支持把 V 与一个小数点绑在一起使用(例如. "99.9V99" 是不允许的)。

表 5-11. to_char 例子

输入 输出
to_char(now(),‘Day, HH12:MI:SS‘) ‘Tuesday , 05:39:18‘
to_char(now(),‘FMDay, HH12:MI:SS‘) ‘Tuesday, 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,‘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,‘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-decimal:"999" Post-decimal:" .999‘) ‘Pre-decimal: 485 Post-decimal: .800‘
to_char(12,‘99V999‘) ‘ 12000‘
to_char(12.4,‘99V999‘) ‘ 12400‘
to_char(12.45, ‘99V9‘) ‘ 125‘
时间: 2024-08-01 18:45:58

oracle to_char函数使用的相关文章

ORACLE TO_CHAR()函数中日期格式的使用

下面以实例来说明: SQL> set linesize 200 SQL> show parameter nls_date_language NAME                     TYPE            VALUE ------------------------------------ ---------------------- ------------------------------ nls_date_language             string     

Oracle常用函数TO_CHAR用法详解(转自博客园-小小草博文)

The following are number examples for the to_char function. to_char(1210.73, '9999.9') would return '1210.7' to_char(1210.73, '9,999.99') would return '1,210.73' to_char(1210.73, '$9,999.00') would return '$1,210.73' to_char(21, '000099') would retur

【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理

Oracle 中的 TO_DATE 和 TO_CHAR 函数oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年): yy two digits(两位年) 08   yyythree digits(三位年) 008   yyyy four digits(四位年) 2008 Month(月): mm number(两位月) 09   mon abbreviated(字符集表示) 9月 若是英文版, 则显示 sep

Oracle to_char(参数,&#39;FM990.00&#39;)函数

遇到一个SQL,记录一下 select to_char(参数,'FM990.00') from 表格 刚看到FM990.00确实不知道什么意思,通过网上资料,知道了 0表示:如果参数(double或者float类型)存在数字就显示数字,不存在数字就显示0 9表示:如果参数(double或者float类型)存在数字就显示数字,不存在数字就显示空格 FM表示:将9带来的空格删除 拓展:所以上面例子就表示左边最小为1位(个位),最大3位(百位),有两位小数,当然格式就不仅仅是FM990.00,格式就是

Oracle中的TO_DATE和TO_CHAR函数以及日期处理

本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:Oracle中的TO_DATE和TO_CHAR函数以及日期处理: oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例. Oracle中日期的格式 Year(年): 格式 说明 显示值 备注 yy two digits(两位年) 08 yyy three digits(三位年) 008 yyyy four digits(四位年) 2008 Month(月): 格式 说明 显示值 备注 m

数据库编程1 Oracle 过滤 函数 分组 外连接 自连接

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> 数据库编程1 Oracle 过滤 函数 分组 外连接 自连接 本文实验基于的数据表: winsows安装好Oracle11g之后,开始实验 SQLplus 登陆 ORacle sqlplus 退出的方式 查看用户之下有什么表 查看表的所有记录,不区分大小写 设置SQLplus行宽,页宽,列宽: 清屏命令 select as 语法 1,as别名的使用 2,没有引号带有空格的别名,无法识别: 3,带有

数据库编程2 Oracle 过滤 函数 分组 外连接 自连接

[本文谢绝转载原文来自http://990487026.blog.51cto.com] 续:数据库编程1 Oracle 过滤 函数 分组 外连接 自连接 where like模糊查询,查询员工姓名是4个字母 SQL> select * from emp where ename like '____';      EMPNO ENAME                JOB                       MGR HIREDATE          SAL       COMM    

Oracle常用函数

前一段时间学习Oracle 时做的学习笔记,整理了一下,下面是分享的Oracle常用函数的部分笔记,以后还会分享其他部分的笔记,请大家批评指正. 1.Oracle 数据库中的to_date()函数的使用: 往emp表中插入一条记录: SQL> insert into emp values(1234,'LIZELU','BOSS',1234,'1980-12-06',10000.0,0,30); insert into emp values(1234,'LIZELU','BOSS',1234,'1

Oracle 常用函数

一.大小写转换函数 LOWER LOWER函数用小写形式替换字符串中的大写字符.语法:LOWER(s). select lower(100+100),lower('SQL'),lower(sysdate) from dual; UPPER UPPER函数用大写形式替换字符串中的小写字符.语法:UPPER(s). select upper('sql') from dual; INITCAP INITCAP函数将字符串转换为首字母大写的形式.字符串中每个单词的第一个字母都被转换为大写形式,面每个单词