a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 134|回复: 1

[考试辅导] Oracle性能调优:日期时间函数大全2

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
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.年月日的处理
回复

使用道具 举报

 楼主| 发表于 2012-8-4 14:06:20 | 显示全部楼层

Oracle性能调优:日期时间函数大全2

select older_date,
- ]( w( X* M' `9 J9 O2 d    newer_date,5 C) V; i$ S2 \1 f
    years,2 F  C- d. E# X9 C# j- m2 }
    months,' ]7 }+ i) ?: y& }# Y+ {& \
    abs(
4 O0 i9 s, E% R% j    trunc(
" {/ }2 _- f7 Z3 Q* @    newer_date-
  z6 R5 P; Z  ]+ W    add_months( older_date,years*12+months )( X% w( T! c$ K# }% D% r
    )# y5 R8 K  y4 h/ R7 s
    ) days
9 I1 Q, @3 Z& [0 [9 \    from ( select
" R: P3 V, g* s    trunc(months_between( newer_date, older_date )/12) YEARS,
4 V3 }) @  c- G    mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS,1 ]% i1 Q6 G: j
    newer_date,: H1 Q: Z8 b7 S; F& p
    older_date
( M- E6 ~- o1 H% k    from (
& {( O! {: ^9 }7 ~$ w, {: S& x    select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date! k/ N* ]. z: \+ B) z+ g
    from emp5 X9 S  i5 R" \0 X8 g! k
    )3 C0 k6 S8 P  P1 X# {; |5 I
    )! W. N5 d" R7 `
    14.处理月份天数不定的办法, h7 d; F4 R  O. _/ K4 a2 x) m0 I
    select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual
  u+ \8 u# ]9 w0 P0 N( h  v    16.找出今年的天数/ a/ C. ~# }3 ^, p
    select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual$ N* V! W) O1 C
    闰年的处理方法
3 L: |$ m1 O# H6 f, F    to_char( last_day( to_date('02' | | :year,'mmyyyy') ), 'dd' )) f% M0 _2 V& J
    如果是28就不是闰年
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-5 15:53 , Processed in 0.153579 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表