51Testing软件测试网QUF{
s2\1\1.日期和字符转换函数用法(to_date,to_char)51Testing软件测试网1_
X
kY;_ I+F#m
51Testing软件测试网Ifa-T$Y2.select to_char( to_date(222,'J'),'Jsp') from dual; 51Testing软件测试网 U\@
_JmO&}fM z
显示Two Hundred Twenty-Two 51Testing软件测试网7_;F|I*R[U;[l0n
51Testing软件测试网g f Qs:g+B'h6y3.求某天是星期几 51Testing软件测试网Fs.bH)bBE5t|
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; 51Testing软件测试网 q9\4[G
O_x
星期一
1}\[i4}6z6~2Q#D0 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; 51Testing软件测试网3Y8Ot4Br H
M
monday 51Testing软件测试网h;xk(a_%^d
设置日期语言 51Testing软件测试网+Q-lnF_'V g
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
]-x#mA,J0 也可以这样 51Testing软件测试网
K+^4X:fRQ.i
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
`/^K0v kp!Ch,c0
51Testing软件测试网9\K9v)Q4g4.两个日期间的天数
U!|x7T(P0 select floor(sysdate - to_date('20020405','yyyymmdd')) from dual; 51Testing软件测试网-svvzT*r
51Testing软件测试网q(YS:PV)ey5.时间为null的用法 51Testing软件测试网 Ow/H/D:sNL6D*s9O
select id, active_date from table1 51Testing软件测试网/AO
Qb#^B1T
UNION
t0jZ5qw0b/~ ?}0 select 1, TO_DATE(null) from dual;
d0A^)k&Vu*W0 注意要用TO_DATE(null)
j)f9q*M"C LX5^U0
jsW6sO;?`2D06.a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd') 51Testing软件测试网cG%TR)h8a+p
B*d9Wyu3y
那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的. 51Testing软件测试网;c3_]Uze
所以,当时间需要精确的时候,觉得to_char还是必要的
'hs8gN E Wt,ek07.日期格式冲突问题 51Testing软件测试网{5dN,]G2]8@7i
输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01'
8o~'O,ENM0 alter system set NLS_DATE_LANGUAGE = American;
2L2SC:FP'XRqi0 alter session set NLS_DATE_LANGUAGE = American;51Testing软件测试网!?/XY5SL(@b
或者在to_date中写 51Testing软件测试网Tnn-\[9x*jo^a?
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
m*gd%Y UZ:C0 注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,可查看 51Testing软件测试网4l&qsp,_
select * from nls_session_parameters; 51Testing软件测试网K)D0UUZl(|o
select * from V$NLS_PARAMETERS;51Testing软件测试网F`j$["~8E2j4Hu
bd&i0Vea-]sV08. select count(*) 51Testing软件测试网lVbF(J[-X2xUo
from ( select rownum-1 rnum from all_objects 51Testing软件测试网#Ly*T'R
H7?D"K"H5e
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-02-01','yyyy-mm-dd')+1) where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D') not in ( '1', '7' ) 51Testing软件测试网/KQ#\+P _(s
51Testing软件测试网k"x0H0E[]
gRW6m%WR
查找2002-02-28至2002-02-01间除星期一和七的天数 51Testing软件测试网O[d'F+i!g.R
在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).
kp C"lN8pn0
51Testing软件测试网@ ~
}3v P:[d9. select months_between(to_date('01-31-1999','MM-DD-YYYY'),
,rla6?1eu0 to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL; 51Testing软件测试网Yc!`7p5l TG8}'BeF
1 51Testing软件测试网o7}B3V
zV
Lm~$i2o s S4L0 select months_between(to_date('02-01-1999','MM-DD-YYYY'), 51Testing软件测试网*F:G+M a*L9kW
to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL; 51Testing软件测试网v:LGx$x6xY^
1.032258064516151Testing软件测试网#y-E:b0LA*qO*h