3.求某天是星期几
& [( v0 N1 }4 E% w2 o select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
A' S5 G p4 o3 U4 ], ]9 P. G 星期一
5 e7 Z' v3 i$ V select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
1 c4 s" u2 D2 P3 z W! g monday
, @3 f3 p3 k. }$ ?3 E; G 设置日期语言2 N* G! k9 {9 n( s1 H) i
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
+ _* q1 ~* l. A. n/ M 也可以这样6 F: ]& K; ~! r2 }9 F) y4 d
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')2 o: ], O9 Z! a
4. 两个日期间的天数6 R J8 b2 o6 }3 I
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
, ~2 n, f8 e. k7 F5 a O' F! Z 5. 时间为null的用法0 N% q# t& ]* w8 u! \ H! Q
select id, active_date from table1
8 N: B* g$ D; d) H UNION
1 w; s7 m1 ~1 j. @ select 1, TO_DATE(null) from dual;* ]( g! \3 K* v& {
注意要用TO_DATE(null); G5 t/ _, ]7 K- x
6.月份差. H8 A3 Q* N$ |5 F0 f
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
# ?2 I, r/ R5 b 那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
6 I- w+ o5 Z: \$ a& x- S 所以,当时间需要精确的时候,觉得to_char还是必要的
, n* w* E o- x: t 7. 日期格式冲突问题
# e8 r( q" s6 D. [ 输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01'" e! l. f7 V: }6 Q) \
alter system set NLS_DATE_LANGUAGE = American
: Y7 O# X# u' U3 R( Q6 g; \ alter session set NLS_DATE_LANGUAGE = American
0 S# B3 N! X% H; U* _0 a& r3 ^+ g 或者在to_date中写
) ^7 w+ \, w& M' i1 `" T( ? select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; N+ i+ P$ u" N5 D m% n7 b
注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,
/ M4 o6 \4 p9 X4 S; u" d( v 可查看) w4 G2 [4 H8 K. t, l! t( k
select * from nls_session_parameters
) ?+ U4 F5 h. ] Z' z4 Q! p select * from V$NLS_PARAMETERS9 j e- e% `) u" L# ?
8.
, a% c7 h- T1 m5 F' } select count(*)8 b; P7 r# b0 V0 r3 o9 ?! M
from ( select rownum-1 rnum
( Z8 G1 o: G8 f from all_objects% l2 r! |3 ?+ o9 `& }
where rownum select sysdate ,to_char(sysdate,'hh') from dual;
4 s) V9 ^5 h/ O* n; D' N5 E( ] SYSDATE TO_CHAR(SYSDATE,'HH')! A+ A) }- J1 r, T1 l# k: C
-------------------- ---------------------0 ~$ X: O4 E) {$ U- ?" \
2003-10-13 19:35:21 07( I8 l q7 h% c! {, z1 H2 h
SQL> select sysdate ,to_char(sysdate,'hh24') from dual;
$ G G& [2 ]# C0 g7 I SYSDATE TO_CHAR(SYSDATE,'HH24')2 s3 j& k' @ z- z ^: h
-------------------- ----------------------- C) D# n: \' V4 w
2003-10-13 19:35:21 19
* b+ s A8 W+ z( I) L4 o/ ? 13.年月日的处理 |