,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 代表本地根符号,没有特别用