Oracle中的時間轉換

本文主要介紹的是Oracle時間的實際應用中的轉換函數和date實際操作的相關關係,我們都知道轉換函數和date實際操作的相關關係最大的就是兩個可以轉換函數即,to_date(),to_char()
to_date() 作用將字符類型按一定格式轉化爲日期類型。
具體用法:to_date(''2004-11-27'',''yyyy-mm-dd''),前者爲字符串,後者爲轉換日期格式,注意,前後兩者要以一對應。
如;to_date(''2004-11-27 13:34:43'', ''yyyy-mm-dd hh24:mi:ss'') 將得到具體的Oracle時間
多種日期格式:
YYYY:四位表示的年份
YYY,YY,Y:年份的最後三位、兩位或一位,缺省爲當前世紀
MM:01~12的月份編號
MONTH:九個字符表示的月份,右邊用空格填補
MON:三位字符的月份縮寫
WW:一年中的星期
D:星期中的第幾天
DD:月份中的第幾天
DDD:年所中的第幾天
DAY:九個字符表示的天的全稱,右邊用空格補齊
HH,HH12:一天中的第幾個小時,12進製表示法
HH24:一天中的第幾個小時,取值爲00~23
MI:一小時中的分鐘
SS:一分鐘中的秒
SSSS:從午夜開始過去的秒數
to_char():將日期轉按一定格式換成字符類型
SQL> select to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') time from dual;  
TIME  
2004-10-08 15:22:58 
即把當前Oracle時間按yyyy-mm-dd hh24:mi:ss格式轉換成字符類型
在oracle中處理日期大全
TO_DATE格式
Day:   
dd number 12   
dy abbreviated fri   
day spelled out friday   
ddspth spelled out, ordinal twelfth   
Month:   
mm number 03   
mon abbreviated mar   
month spelled out march   
Year:   
yy two digits 98   
yyyy four digits 1998 
24小時格式下時間範圍爲: 0:00:00 - 23:59:59....
12小時格式下Oracle時間範圍爲: 1:00:00 - 12:59:59 ....
[ZT]日期和??函???
1.
日期和字符轉換函數用法(to_date,to_char)
2.
select to_char( to_date(222,''J''),''Jsp'') from dual 
顯示Two Hundred Twenty-Two
3.
求某天是星期幾
select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),''day'') from dual;  
星期一
select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),
''day'',''NLS_DATE_LANGUAGE = American'') from dual;   
monday  
設置日期語言
ALTER SESSION SET NLS_DATE_LANGUAGE=''AMERICAN'';  
也可以這樣
TO_DATE (''2002-08-26'', ''YYYY-mm-dd'', ''NLS_DATE_LANGUAGE = American'') 
4.
兩個日期間的天數
select floor(sysdate - to_date(''20020405'',''yyyymmdd'')) from dual; 
5. 時間爲null的用法
select id, active_date from table1   
UNION   
select 1, TO_DATE(null) from dual; 
注意要用TO_DATE(null)
6.
a_date between to_date(''20011201'',''yyyymmdd'') 
and to_date(''20011231'',''yyyymmdd'')  
那麼12月31號中午12點之後和12月1號的12點之前是不包含在這個範圍之內的。
所以,當時間需要精確的時候,覺得to_char還是必要的
7. 日期格式衝突問題
輸入的格式要看你安裝的ORACLE字符集的類型, 比如: US7ASCII, date格式的類型就是: ''01-Jan-01''
alter system set NLS_DATE_LANGUAGE = American   
alter session set NLS_DATE_LANGUAGE = American  
或者在to_date中寫
select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),
''day'',''NLS_DATE_LANGUAGE = American'') from dual;  
注意我這只是舉了NLS_DATE_LANGUAGE,當然還有很多,
可查看
q查找2002-02-28至2002-02-01間除星期一和七的天數
在前後分別調用DBMS_UTILITY.GET_TIME, 讓後將結果相減(得到的是1/100秒, 而不是毫秒).
9.
select months_between(to_date(''01-31-1999'',''MM-DD-YYYY''),   
to_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;   
1  
select months_between(to_date(''02-01-1999'',''MM-DD-YYYY''),   
to_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;  
1.03225806451613   
 
10. Next_day的用法
Next_day(date, day)  
Monday-Sunday, for format code DAY   
Mon-Sun, for format code DY   

1-7, for format code D  



注:在網上找的一些文章,感謝提供者,本博客所有內容僅供自身以及各位朋友參考,不用於其他用途

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章