oracle日期函數(shù)_第1頁
oracle日期函數(shù)_第2頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1 / 111、轉(zhuǎn)換函數(shù)與 date 操作關(guān)系最大的就是兩個(gè)轉(zhuǎn)換函數(shù): to_date(),to_char()to_date() 作用將字符類型按一定格式轉(zhuǎn)化為日期類型:具體用法 :to_date(2004-11-27,yyyy-mm-dd), 前者為字符串,后者為轉(zhuǎn)換日期格式,注意,前后兩 者要以一對(duì)應(yīng)。如 ;to_date(2004-11-27 13:34:43, yyyy-mm-dd hh24:mi:ss)將得到具體的時(shí)間多種日期格式:YYYY :四位表示的年份YYY, YY, Y:年份的最后三位、兩位或一位,缺省為當(dāng)前世紀(jì)MM: 0112 的月份編號(hào)MONTH :九個(gè)字符表示的月份,右

2、邊用空格填補(bǔ)MON :三位字符的月份縮寫WW :一年中的星期D:星期中的第幾天DD :月份中的第幾天DDD :年所中的第幾天DAY :九個(gè)字符表示的天的全稱,右邊用空格補(bǔ)齊HH , HH12 :一天中的第幾個(gè)小時(shí), 12 進(jìn)制表示法HH24 :一天中的第幾個(gè)小時(shí),取值為 0023MI :一小時(shí)中的分鐘SS :一分鐘中的秒SSSS :從午夜開始過去的秒數(shù)to_char(): 將日期轉(zhuǎn)按一定格式換成字符類型SQL select to_char(sysdate,yyyy-mm-dd hh24:mi:ss) time from dual;TIME 2004-10-08 15:22:58即把當(dāng)前時(shí)間按

3、yyyy-mm-dd hh24:mi:ss格式轉(zhuǎn)換成字符類型在 oracle 中處理日期大全TO_DATE 格式Day:dd number 12dy abbreviated friday spelled out fridayddspth spelled out, ordinal twelfth Month:mm number 032 / 11mon abbreviated mar month spelled out marchYear:yy two digits 98yyyy four digits 199824 小時(shí)格式下時(shí)間范圍為:12 小時(shí)格式下時(shí)間范圍為:ZT 日期和 ?函 ?1.日期

4、和字符轉(zhuǎn)換函數(shù)用法(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設(shè)置日期語言ALTER SESSION SET NLS_DATE_LANGUAGE=AMERICAN

5、;也可以這樣TO_DATE (2002-08-26, YYYY-mm-dd, NLS_DATE_LANGUAGE = American)4.兩個(gè)日期間的天數(shù)select floor(sysdate - to_date(20020405,yyyymmdd) from dual;5. 時(shí)間為 null 的用法select id, active_date from table1UNIONselect 1, TO_DATE(null) from dual;注意要用 TO_DATE(null)6.a_date between to_date(20011201,yyyymmdd) and to_date(

6、20011231,yyyymmdd) 那么 12 月 31 號(hào)中午 12 點(diǎn)之后和 12 月 1 號(hào)的 12 點(diǎn)之前是不包含在這個(gè)范圍之內(nèi)的 所以,當(dāng)時(shí)間需要精確的時(shí)候,覺得 to_char 還是必要的7. 日期格式?jīng)_突問題輸入的格式要看你安裝的 ORACLE 字符集的類型, 比 如: US7ASCII, date 格式 的類型就是: 01-Jan-01alter system set NLS_DATE_LANGUAGE = American0:00:00 - 23:59:59.1:00:00 - 12:59:59 .to_date,to_char )3 / 11alter session s

7、et 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 ,當(dāng)然還有很多,可查看select * from nls_session_parametersselect * from V$NLS_PARAMETERS8.select count(*)from ( select rownum-1 rnumfrom all_objectsw

8、here rownum selectsysdate ,to_char(sysdate,hh) from dual;SYSDATE TO_CHAR(SYSDATE,HH) 2003-10-13 19:35:21 07SQL select sysdate ,to_char(sysdate,hh24) from dual;SYSDATE TO_CHAR(SYSDATE,HH24) 2003-10-13 19:35:21 19獲取年月日與此類似13.年月日的處理selectolder_date,newer_date,years,months,abs(trunc(newer_date-add_month

9、s( older_date,years*12+months )daysfrom(selecttrunc(months_between(newer_date,older_date)/12)YEARS,mod(trunc(months_between( newer_date, older_date ), 12 ) MONTHS, newer_date,older_datefrom ( select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date from emp )14. 處理月份天數(shù)不定的辦法 select t

10、o_char(add_months(last_day(sysdate) +1, -2), yyyymmdd),last_day(sysdate)from dual 16.找出今年的天數(shù)select add_months(trunc(sysdate,year), 12) - trunc(sysdate,year) from dual閏年的處理方法to_char( last_day( to_date(02 | :year 如果是 28就不是閏年17.yyyy 與 rrrr 的區(qū)別YYYY99 TO_C yyyy 99 0099rrrr 99 1999yyyy 01 0001rrrr 01 2001

11、18. 不同時(shí)區(qū)的處理select to_char( NEW_TIME( sysdate, GMT,EST), dd/mm/yyyy hh:mi:ss) ,sysdate from dual;19.5 秒鐘一個(gè)間隔Select TO_DATE(FLOOR(TO_CHAR(sysdate,SSSSS)/300)300,SSSSS) ,TO_CHAR(sysdate,SSSSS)from dual 2002-11-1 9:55:00 35786SSSSS 表示 5 位秒數(shù)20.一年的第幾天,mmyyyy) ),5 / 11select TO_CHAR(SYSDATE,DDD),sysdate fr

12、om dual310 2002-11-6 10:03:51 21. 計(jì)算小時(shí) ,分, 秒, 毫秒selectDays,A,TRUNC(A*24) Hours,TRUNC(A*24*60 - 60*TRUNC(A*24) Minutes,TRUNC(A*24*60*60 - 60*TRUNC(A*24*60) Seconds, TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)mSeconds from(selecttrunc(sysdate) Days,sysdate - trunc(sysdate) Afrom dual)select * from ta

13、bnameorder by decode(mode,FIFO,1,-1)*to_char(rq,yyyymmddhh24miss);/floor(date2-date1) /365)作為年floor(date2-date1, 365) /30)作為月mod(mod(date2-date1, 365), 30)作為日 .23.next_day 函數(shù)next_day(sysdate,6) 是從當(dāng)前開始下一個(gè)星期五。后面的數(shù)字是從星期日開始算起。1 2 3 4 5 6 7 日一二三四五六oracle 中有很多關(guān)于日期的函數(shù)在 oracle 中有很多關(guān)于日期的函數(shù),如:1 、add_months()

14、用于從一個(gè)日期值增加或減少一些月份 date_value:=add_months(date_value,number_of_months)例:SQL select add_months(sysdate,12) Next Year from dual;Next Year 13-11 月-04SQL select add_months(sysdate,112) Last Year from dual;Last Year 13-3 月 -13SQL2 、 current_date() 返回當(dāng)前會(huì)放時(shí)區(qū)中的當(dāng)前日期 date_value:=current_date6 / 11SQL column se

15、ssiontimezone for a15SQL select sessiontimezone,current_date from dual;SESSIONTIMEZONE CURRENT_DA+08:00 13-11月 -03SQL alter session set time_zone=-11:002 /會(huì)話已更改。SQL select sessiontimezone,current_timestamp from dual;SESSIONTIMEZONE CURRENT_TIMESTAMP-11:00 12-11月 -03 04.59.13.668000下午 -11:00SQL3 、 cu

16、rrent_timestamp()以 timestamp with time zone數(shù)據(jù)類型返回當(dāng)前會(huì)放時(shí)區(qū)中的當(dāng)前日期timestamp_with_time_zone_value:=current_timestamp(timestamp_precision)SQL column sessiontimezone for a15SQL column current_timestamp format a36SQL select sessiontimezone,current_timestamp from dual;SESSIONTIMEZONE CURRENT_TIMESTAMP+08:00 1

17、3-11月 -03 11.56.28.160000上午 +08:00SQL alter session set time_zone=-11:002 /會(huì)話已更改。SQL select sessiontimezone,current_timestamp from dual;SESSIONTIMEZONE CURRENT_TIMESTAMP-11:00 12-11月 -03 04.58.00.243000下午 -11:00SQL4 、 dbtimezone() 返回時(shí)區(qū) varchar_value:=dbtimezone SQL select dbtimezone from dual;7 / 11DBTIME-07:00SQL5 、 extract() 找出日期或間隔值的字段值 date_value:=extract(date_field from datetime_value|interval_value) SQLselect extract(m

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論