`
elevenlsy
  • 浏览: 31713 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

Oracle中to_char 参数详解 及实例

阅读更多

序号
格式
 
说明

 1 -  /  ,  . ; :
"text" 时间分隔符号,除了标准的几个,还允许用文字作为分割符号。
例如 to_char(sysdate,'YYYY"年"mm"月"dd"日"')=2008年04月24日

 2 AD
A.D.  即拉丁文Anno Domini的简写,表示公元.会根据nls的不同转换为公元或者ad等
无特殊注意事项

 3 AM
A.M.  上午的简写 ,同pm, p.m. (下午) , 中文环境输出为上午(如果是上午)

 4 BC
B.C.  虽然标准的写法是B.c. (c小写) 或者BC,好在Oracle不讲究这个。表示公元前

 5 CC
SCC  返回世纪,以阿拉伯数字表示
如果年的后两位介于01-99那么,返回前两位+1,否则返回前两位

 6 D  一周之中的某天,返回的是序号1-7
 7 DAY  一周之中的某天,不过返回的是星期几而已,这和语言设置有关系,在中国环境 NLS_DATE_LANGUAGE=SIMPLIFIED CHINESE ,用星期一到星期天表示

 8 DD 月份中的某天(1-31)

 9 DDD  年份中的某天(1-366)
 10 DL 'DL' 返回长的日期格式。受到NLS_TERRITORY,NLS_LANGUAGE参数控制。例 2008年4月28日 星期一
限制:除了DL,其它什么的都不能设置。

 11 DS  返回短的日期格式。受到NLS_TERRITORY,NLS_LANGUAGE参数控制。 例如 2008-04-28
限制:除了DL,其它什么的都不能设置。
 12 DY  日期的简称,就是星期几(当然这指的是中国环境下)
 13 E  纪元简称,但是只适合以下集中日历:日本皇室,中华民国,太过佛历
 14 EE  纪元全程,适合情况同E
 15 FF [1..9]  就是毫秒,如果不更上数字就是用默认的精度。
只能用于timestamp类型的。

 16 FM  值得注意的一个函数:不返回任何内容。
有点不明白oracle为什么设置这个东西.

 17 FX  同上
 18 HH  表示小时,为12小时制,同hh12(1-12)
 19 HH12  表示小时,为12小时制(1-12)
 20 HH24  表示小时,为24小时制(0-23)

 21 IW  ISO标准的星期序号(1-52,或者1-53)
 22IYYY
IYY
IY
I
 IYY,IY,I, ISO年(4位)的4,3,2,1位数字(倒数)
to_char(to_date(21120401,'yyyymmdd'),'iyyy, iyy,iy,i')=2112, 112,12,2

 23 J  儒略日(多用于天文的一种日历),从公元前4712年一月一日算起,得出的结果是个整数,算法大体为 (公元日期+4712)*儒略日历年平均天数
 24 MI  秒(0-59)
 25 MM  2位月(1-12)
 26 MON  月的简称,和国家有关系NLS_DATE_LANGUAGE,例如04在中文环境下用4月表示.

 27 MONTH  月的名称,国家有关系NLS_DATE_LANGUAGE,目前在中文下04表示为4月。
 28 PM
P.M.
  同am,a.m.表示下午
 29 Q  季度(1-4)
 30 RM  用罗马数字表示的月份,I   ,II  ,III ,IV  ,V   ,VI  ,VII ,VIII,IX  ,X   ,XI  ,XII

 31 RR  有点四舍五入表示年的意思,具体的用法有那么一点点复杂。
以s表示输入的年份最后两位,c表示当前的年份最后两位,其输出结果(新的年份前两位)可以用函数r=f(s,c)来表示,s2,c2分别表示s,c的前两位。
1)s=[0,49],c=[0,49],则r=c2
2)  s=[0,49],c=[50,99],则 r=c2+1
3)  s=[50,99],c=[0,49],则r=c2-1
4)  s=[50,99],c=[50,99],则 r=c2
简而言之就是靠近当前年份原则,如果和当前年份同区域那么就一样,如果比当前区域大,那么就是当作是当前世纪前一世纪,否则就是下一个世纪。
举例来说,以to_date为例子
SQL> select to_date('89-01-01','rr-mm-dd') ,to_date('12-01-01','rr-mm-dd') FROM DUAL;

TO_DATE('89-01-01','RR-MM-DD') TO_DATE('12-01-01','RR-MM-DD')
------------------------------ ------------------------------
1989-01-01                     2012-01-01
我想oracle会搞这个东东出来,估计有两个考虑一个是为了方便,一个是为了对付百年或者千年问题。

 32 RRRR  如果输入参数只有两位,则同rr,否则就同yyyy作用.
 33 SS  秒(0-59),一分钟内

 34 SSSSS  一天从午夜开始的累积秒数.(0-86399)
 35 TS  返回短日期格式内容,包括时分秒等,只能和dl,ds组合使用,格式是:
dl ts或者dl ts ,中间以空格间隔开。TO_CHAR(SYSDATE,'TS')=下午 4:50:04
表现形式受NLS_TERRITORY 和NLS_LANGUAGE影响。

 36 TZD  夏令时制信息,时区简写加上夏令时信息,必须和格式tzr设置的时区对应。
包括下面三个TZ开头的,都是和时区相关,并不是直接用在to_char

 37 TZH  时区中的小时,例如hh:mi:ss.fftzh:tzm'
 38 TZM  时区中的分钟.

 39 TZR  时区中的区域信息,必须是数据库支持的时区,例如US/Pacific
 40 WW  和iw类似,也是表示星期的序号,从年的第一天算起到年的最后一个第七天。二者取值基本相同。(1-53) ,例如2008-01-01  到2008-01-07 算1,2008-01-09~2008-01-13 算2

 41 W  一个月中的星期序号,其算法同ww,不过是局限在一月之内而已,和iso的不同。
 42 X  代表本地根符号,没有特别用处,只能和timestamp类型一起使用.
 43 Y,YYY  四位年,用都好分隔 例如2,008

 44 YEAR
SYEAR  发音表达的年,例如 2008=two thousand eight
S前缀表示公元前BC

 45 YYYY
SYYYY  四位年,S前缀表示公元前BC
 46 YYY
YY
Y  一次表示后面3,2,1位的年,例如2008 可以分别取值为008,08,8

  总结  从以上看,主要就是表示时间几个部分的格式:世纪、年,月,日,时,分,秒,毫秒,以及其它一些混合格式。每个时间部分都可以有多种的表达方式,通过这样归类就比较容易记忆。
  很多格式可以组合使用,这样最终可以形成足够丰富的表达其形势;
 其次很多格式和nls是密切相关的;最后某些输出(返回)和格式大小写是有关系的,这在中文环境下体现不出来(目前来没有看到),但是english环境下就名下,以to_char(sysdate,'day')为例子,如果是西文环境是返回sun(假设sysdate位于周末),如果to_char(sysdate,'DAY')则返回SUN

使用前对一些不确定的先试验一下最好,实在不行就查阅oracle的原始文档.

The following are date examples for the to_char function.
to_char(sysdate, 'yyyy/mm/dd');would return '2003/07/09'
to_char(sysdate, 'Month DD, YYYY');would return 'July 09, 2003'
to_char(sysdate, 'FMMonth DD, YYYY');would return 'July 9, 2003'
to_char(sysdate, 'MON DDth, YYYY');would return 'JUL 09TH, 2003'
to_char(sysdate, 'FMMON DDth, YYYY');would return 'JUL 9TH, 2003'
to_char(sysdate, 'FMMon ddth, YYYY');would return 'Jul 9th, 2003'

You will notice that in some examples, the format_mask parameter begins with "FM". This means that zeros and blanks are suppressed. This can be seen in the examples below.
to_char(sysdate, 'FMMonth DD, YYYY');would return 'July 9, 2003'
to_char(sysdate, 'FMMON DDth, YYYY');would return 'JUL 9TH, 2003'
to_char(sysdate, 'FMMon ddth, YYYY');would return 'Jul 9th, 2003'

The zeros have been suppressed so that the day component shows as "9" as opposed to "09".

分享到:
评论

相关推荐

    Oracle存储过程-1

    Oracle 数据类型及存储方式 概述 通过实例,全面而深入的分析oralce的基本数据类型及它们的存储方式。以ORACLE 10G为基础,介绍oralce 10g引入的新的数据类型。让你对oracle数据类型有一个全新的认识。揭示一些不...

    oracle 的表空间实例详解

    oracle 的表空间实例详解 查询表空间 SELECT UPPER(F.TABLESPACE_NAME) 表空间名,  D.TOT_GROOTTE_MB 表空间大小(M),  D.TOT_GROOTTE_MB - F.TOTAL_BYTES 已使用空间(M),  TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F....

    oracle中创建序列及序列补零实例详解

    oracle中创建序列及序列补零实例详解 我们经常会在在DB中创建序列: -- Create sequence create sequence COMMON_SEQ minvalue 1 maxvalue 999999999 start with 1 increment by 1 cache 20 cycle; 我们的序列的...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    10.3 使用TO_CHAR、TO_NUMBER 和TO_DATE转换函数 361 10.4 在SELECT语句中应用条件表达式 368 10.4.1 嵌套函数 368 10.4.2 条件函数 369 10.5 本章知识点回顾 375 10.6 自测题 376 10.7 自测题答案 378 第11...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

    10.3 使用TO_CHAR、TO_NUMBER 和TO_DATE转换函数 361 10.4 在SELECT语句中应用条件表达式 368 10.4.1 嵌套函数 368 10.4.2 条件函数 369 10.5 本章知识点回顾 375 10.6 自测题 376 10.7 自测题答案 378 第11...

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    java 面试题 总结

    如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 15、error和exception有什么区别? error 表示恢复不是...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    java面试800题

    Q0032 Oracle的集合操作函数,如sum(),avg(),max(),min(),与select,where,grouby,having的先后顺序,使用方法 Oracle集合查询基本知识,只有进行分组的列,才可以取在集合查询SQL语句中取字段,先Group By,再Having...

    java面试宝典

    28、char 型变量中能不能存贮一个中文汉字?为什么? 10 29、abstract class 和interface 有什么区别? 10 30、Static Nested Class 和Inner Class 的不同? 11 31、java 中会存在内存泄漏吗,请简单描述。 11 32、...

    千方百计笔试题大全

    28、char 型变量中能不能存贮一个中文汉字?为什么? 10 29、abstract class 和interface 有什么区别? 10 30、Static Nested Class 和Inner Class 的不同? 11 31、java 中会存在内存泄漏吗,请简单描述。 11 32、...

    Java面试宝典2010版

    10、在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 11、说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp...

    整理后java开发全套达内学习笔记(含练习)

    进行高精度运算可以用java.math包中BigDecimal类中的方法。 自动类型提升又称作隐式类型转换。 强制类型转换:int ti; (byte) ti ; 强制转换,丢弃高位 宣告变量名称的同时,加上“final”关键词来限定,这个...

    java基础题 很全面

    16. 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中? 22 17. 说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld....

    最新Java面试宝典pdf版

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    Java面试笔试资料大全

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

    JAVA面试宝典2010

    1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。 61 2、编写一个程序,将d:\java目录下的所有.java文件复制到d...

Global site tag (gtag.js) - Google Analytics