我们的团队服务宗旨是: 拥有较强的ERP团队,帮助您的企业实现信息化, 拥有ERP周边配套系统的开发和维护经验的团队,为您的企业信息化提供整套的服务,ERP和WEB的开发。ERP 采用D2K开发,团队人员拥有来自电子半导体制造企业的ERP 3至4年以上系统开发和维护经验,熟悉制造企业的流程和ERP企业运作流程,不断更新的知识为您的企业服务,优质的服务是您放心的选择. 給自己一個空間,給心靈一個空間,欢迎您我的朋友,MSN: yucheng_sam@hotmail.comQQ : 106786879

DATE格式轉換

上一篇 / 下一篇  2008-01-29 11:26:10 / 个人分类:SQL

TO_DATE格式   ITPUB个人空间k+lm,UT
Day:   ITPUB个人空间`&[ t3~Q1_-oU
dd number 12   ITPUB个人空间R,N#q+t{8N0F
dy abbreviated fri   ITPUB个人空间G"Q FP%kKCU
day spelled out friday   ITPUB个人空间W}7E[5AE b6j5m~
ddspth spelled out, ordinal twelfth   ITPUB个人空间 ^8gW:m0a0I!|}R
Month:  
l _#\;F5U{eCI0mm number 03  
*U&xj&^~d{!E g0mon abbreviated mar   ITPUB个人空间bf7r/F,h[4\
month spelled out march   ITPUB个人空间F9^p `6ejsz
Year:  
O3oi8dZp"m0yy two digits 98   ITPUB个人空间F%IXu'w*j)I&T(G
yyyy four digits 1998   ITPUB个人空间(sPqm%S'xpg

C%[3qPa.^ d/^1h024
小时格式下时间范围为:
 0:00:00 - 23:59:59....  
N1Kc4{(l-\(Z%_5|9D012
小时格式下时间范围为:
 1:00:00 - 12:59:59 ....  
1cZe'i2eca VS$h*@H01.   ITPUB个人空间-Zi#p x/C)Q
日期和字符转换函数用法(to_date,to_char
  
(cr$_yCo&b0ITPUB个人空间 kn8pu%`1?W [$f|
2.   ITPUB个人空间!~f)~4|#H e
select to_char( to_date(222,'J'),'Jsp') from dual   ITPUB个人空间 ?Y}%K^O-y3wdA
ITPUB个人空间U?0y%j!L"P;}y"`
显示
Two Hundred Twenty-Two  
*Lp'F ssn.}[0
T}2i/zs` Od%G03.   ITPUB个人空间TX1fReW F
求某天是星期几
  
L9uuv[D`w0select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;   ITPUB个人空间,xy!N;r*Y{?|sI5z
星期一
  
/i*P&J2dq*E`K0select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;   ITPUB个人空间8hhrm}
monday   ITPUB个人空间 Z#S&[%rG^
设置日期语言
   ITPUB个人空间-z5F4s'MA
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';  
I.Cuw J0
也可以这样
   ITPUB个人空间B*| @EO,Q W x
TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')  
XpWZl s0ITPUB个人空间*P.]~1uu-R\
4.  
8Orpv GW-b F3^T#n0
两个日期间的天数
   ITPUB个人空间 q#Fr8n} E}"sr j4x
select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;   ITPUB个人空间0Sw#\M~9h0PP

$Or:AA])r1bH05. 
时间为null的用法
   ITPUB个人空间4w:Yu+dQ9[R j `
select id, active_date from table1  
7zA,qf w:Q0UNION   ITPUB个人空间 Fx:lr B:b e
select 1, TO_DATE(null) from dual;  
7aAey%xU9N0ITPUB个人空间%r(Og&RF:oH#pQO _
注意要用
TO_DATE(null)  
;t eK~4L0ITPUB个人空间ua d W4Cw
6.   ITPUB个人空间]}:n$V)f&~
a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')   ITPUB个人空间-S4c%_Uf"S
那么1231号中午12点之后和121号的12点之前是不包含在这个范围之内的。
  
{ IJ8t&mI*_GC6]@0
所以,当时间需要精确的时候,觉得to_char还是必要的
  
9jGFb5m,Y07. 
日期格式冲突问题
  
(yym xNk%K x d0
输入的格式要看你安装的ORACLE字符集的类型比如: US7ASCII, date格式的类型就是
: '01-Jan-01'  
6i4vLm;Wo5d/cW0alter system set NLS_DATE_LANGUAGE = American   ITPUB个人空间!R*{z:v(L cf
alter session set NLS_DATE_LANGUAGE = American   ITPUB个人空间9lx%tw_d3uU@
或者在to_date中写
  
8B,_1VS \0select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;   ITPUB个人空间Bp P!v3Q']'@
注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,
   ITPUB个人空间j s:z oi p%Y
可查看
  
*l,k,r@K9N/N;Oos0select * from nls_session_parameters  
;\W[qQy zO1i9j0select * from V$NLS_PARAMETERS   ITPUB个人空间#hqk7o:~{
ITPUB个人空间9hx)LJL+C6d C"G`rU
8.  
DD5F:t9V+O7j0select count(*)   ITPUB个人空间*g"}dx8Qi}
from ( select rownum-1 rnum   ITPUB个人空间`*`;dP:r3h
from all_objects  
6?Z\uW:y~q0where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-   ITPUB个人空间{*hA xO
02-01','yyyy-mm-dd')+1  
HIJ'n| qZX0)   ITPUB个人空间1N?~1`s E
where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )  
)i+xk#l |$I.K7Be4d0not   ITPUB个人空间!sf)k8t Si;V
in ( '1', '7' )  
}4s1Y"Ky0ITPUB个人空间}G!_,V3[Al~aqf
查找2002-02-282002-02-01间除星期一和七的天数
   ITPUB个人空间m'pF },t p P%} H;w
在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100而不是毫秒
).  
'{?,bw+PpJ+C0ITPUB个人空间s(e m{+l [,j
9.  
(O)Z;u-P_0q0select months_between(to_date('01-31-1999','MM-DD-YYYY'),  
jC,?'S?i,Xxc0to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;  
!])F { X^I2BvH01  
dO n~[+A0
o4{e'|{-G(k? RF0select months_between(to_date('02-01-1999','MM-DD-YYYY'),  
SZH([ q"c9g0to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;   ITPUB个人空间 SO{ llP|
ITPUB个人空间 X"bn*[ TC0D
1.03225806451613   ITPUB个人空间7tn|!gAA
10. Next_day
的用法
   ITPUB个人空间Q'xR*M x(aT
Next_day(date, day)   ITPUB个人空间EJkO;k~
ITPUB个人空间1th8g"[!B0F
Monday-Sunday, for format code DAY   ITPUB个人空间a(T4Mca
Mon-Sun, for format code DY  
4xa8e)j;Ag!X01-7, for format code D   ITPUB个人空间au2Q }&weV
ITPUB个人空间 B*SI1@)a
11  
Z9O^:e K3m#y Tq ~S0select to_char(sysdate,'hh:mi:ss') TIME from all_objects  
-u*Ldh.W-OoO,y3u0
注意:第一条记录的TIME 与最后一行是一样的
  
t3ejc]&Bw0
可以建立一个函数来处理这个问题
   ITPUB个人空间 PZ"XS9n,@ }~e
create or replace function sys_date return date is  
W4n^;e;O&s0begin   ITPUB个人空间%dMx0O4a x'BnG:W#x
return sysdate;  
;f3o:gJy9Ah0end;  
(S:a2j g"T m"k0
/\ HpJsH(AG0select to_char(sys_date,'hh:mi:ss') from all_objects;   ITPUB个人空间w'tK8E(zUF
12.  
X3@uc6T)Z_7x0
获得小时数
  
"Q9U}-Fin N.j ]4v0ITPUB个人空间i4M9H%TR'bGC
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer   ITPUB个人空间;[E b+P&Qe&C n4S%m0\
SQL> select sysdate ,to_char(sysdate,'hh') from dual;  
*z&P3?7L+XF fj0ITPUB个人空间2P$n(xA8o!z3t
SYSDATE TO_CHAR(SYSDATE,'HH')   ITPUB个人空间$n} JzqTYwk
-------------------- ---------------------   ITPUB个人空间Y YzQ8Mf5B
2003-10-13 19:35:21 07  
+O9z9\7sf x0ITPUB个人空间aeVX9a8_ s~&f Q
SQL> select sysdate ,to_char(sysdate,'hh24') from dual;  
2Z)LE#JS x?~nF0
'||nju0SYSDATE TO_CHAR(SYSDATE,'HH24')  
G |(oJq!kgRT(pC0-------------------- -----------------------   ITPUB个人空间RJ Wp2Ct*\v
2003-10-13 19:35:21 19   ITPUB个人空间q!w!U[1N

g NV n:`^+| Td0
获取年月日与此类似
   ITPUB个人空间6Qrs!F I7Z#UwO{
13.   ITPUB个人空间U!h QF9t9SJ(w
年月日的处理
   ITPUB个人空间c5E+p-JTj
select older_date,   ITPUB个人空间1m.lD)]k&i1a,@N
newer_date,  
9a ktZ_$P0years,  
m5I T*EU0months,  
+Ulw HJ O0[0abs(  
[`N,E| Q:J+o0trunc(   ITPUB个人空间kMe@ g&@N)c
newer_date-   ITPUB个人空间gTO{3Z%OQ+g
add_months( older_date,years*12+months )   ITPUB个人空间!x }*rf6?7S"c^
)   ITPUB个人空间w[&e.@ E
) days   ITPUB个人空间Ls*JG3?\1m {
from ( select  
[y1~bo0trunc(months_between( newer_date, older_date )/12) YEARS,  
3lX`Q D ps3sD:p0mod(trunc(months_between( newer_date, older_date )),  
nK!x;^5X012 ) MONTHS,  
PFw)D}p*K m@0newer_date,  
~Ce)NM]R0older_date   ITPUB个人空间W(g3tp&? kI ^r\
from ( select hiredate older_date,   ITPUB个人空间Ngrf/B+d#yX
add_months(hiredate,rownum)+rownum newer_date   ITPUB个人空间nyFI9G!v
from emp )  
m6Ky%|@#Zz6Z+b6b;O0)  
/Kb3ApQ.H2~4z)y)a0ITPUB个人空间1x-MrvPF%z2B&ZY
14.  
8|(s#Q7S wv0
处理月份天数不定的办法
  
2?HE;I]]0@n*bv0select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual  
u`dd0OYF9b V0ITPUB个人空间 TO fx!o^ a-|gh
16.   ITPUB个人空间?+`b"VDc5_
找出今年的天数
  
L^1Y+^ nPR L_)T0select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual  
1oKT(si(|0
^'}?AGzS0
闰年的处理方法
   ITPUB个人空间(RCh6e yZQ4L
to_char( last_day( to_date('02' || :year,'mmyyyy') ), 'dd' )   ITPUB个人空间%|1a'YV Pa;^D5T Q"a
如果是28就不是闰年
  
*Pm)V-l6xSi!xHg0
,}q;{Q%q e017.  
u(RSO0A^0yyyy
rrrr的区别
  
I9PEerv Ps;W0'YYYY99 TO_C  
n t\z#P4X?0------- ----   ITPUB个人空间Pi$nCYc
yyyy 99 0099  
`k"k!{;d"W0rrrr 99 1999   ITPUB个人空间-i3HQ#J0]7S%[
yyyy 01 0001  
I/m ^ N4u K,o0rrrr 01 2001  
)CTg(iVl(if`0
:x,rK$qW'g?E018.
不同时区的处理
   ITPUB个人空间^gt)qa{?
select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate   ITPUB个人空间-c%ys1s'O K4O"J8y5w
from dual;  
*M/{'w`!}0
%ST1ot1L019.   ITPUB个人空间P!j QH G
5
秒钟一个间隔
   ITPUB个人空间I0Qv]%mJ(?
Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')   ITPUB个人空间/Du q;Y6E9O
from dual  
9~5e`,f9w"w;_-@(J"_5z&x0
9C~ y@%Q+|rc:P02002-11-1 9:55:00 35786  
+cQ$q M {c2_t*c0SSSSS
表示5位秒数
   ITPUB个人空间:h#SLr.Q

/ud+J9E(R f5IaW020.  
'i_R0|%I0
一年的第几天
   ITPUB个人空间xms.LDPw3U5r
select TO_CHAR(SYSDATE,'DDD'),sysdate from dual   ITPUB个人空间:E0FRpNH
310 2002-11-6 10:03:51   ITPUB个人空间Z"vV ge/C6r i

ep1H+O+WP m021.
计算小时,,,毫秒
   ITPUB个人空间0~ N'{.HwjU$g*lJ
select  
A9bJ nWs8H F0Days,  
1?$qfK^?0A,  
x P2H*y b(uM0TRUNC(A*24) Hours,   ITPUB个人空间 n7n\$gOn:`%Njk
TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,   ITPUB个人空间zn3a?S:|}n
TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,   ITPUB个人空间eB o0Fy B*w}
TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds   ITPUB个人空间o8d-I.E3V!B
from   ITPUB个人空间R,f6Gu6]d7w
(  
6@L\F'l0select   ITPUB个人空间`'U/mOPB
trunc(sysdate) Days,  
yw4mW Vc0sysdate - trunc(sysdate) A   ITPUB个人空间sH:JW\8` K$A)a
from dual  
Hdz"|N0)  
N0xRN"n+i|G0
Z+Q$p/[ m2E(M y0
:j.\A%q7i p+CG/WB0ITPUB个人空间(E"M-XY2{&U@)\
select * from tabname   ITPUB个人空间.F/~8t j3w
order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');  
vQKLi0ITPUB个人空间/YCv@ bPg an;V
//   ITPUB个人空间i+hu~P#k)j;c
floor((date2-date1) /365) 
作为年
  
5X9o0E'} Ru7f{V$_ M0floor((date2-date1, 365) /30) 
作为月
   ITPUB个人空间+E @;Aj6b6?O*d
mod(mod(date2-date1, 365), 30)
作为日
.   ITPUB个人空间4Ek/P T7e^ u
23.next_day
函数
  
1Z1r%C@? I { FW/[V0next_day(sysdate,6)
是从当前开始下一个星期五。后面的数字是从星期日开始算起。
   ITPUB个人空间.s2k`5M6E'G
1 2 3 4 5 6 7   ITPUB个人空间&ii)Y~ b |-N#|
       


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-07  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 2762
  • 日志数: 45
  • 图片数: 4
  • 文件数: 2
  • 建立时间: 2007-12-28
  • 更新时间: 2008-08-26

RSS订阅

Open Toolbar