oracle中日期处理方法 汇总
生活随笔
收集整理的這篇文章主要介紹了
oracle中日期处理方法 汇总
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
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小時格式下時間范圍為:?1:00:00?-?12:59:59?....? 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')? 網管聯盟bitsCN@com 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,當然還有很多,? 可查看?select?*?from?nls_session_parameters?? select?*?from?V$NLS_PARAMETERS??? 8.?select?count(*)?? from?(?select?rownum-1?rnum?? from?all_objects?? where?rownum?<=?to_date('2002-02-28','yyyy-mm-dd')?-?to_date('2002-?? 02-01','yyyy-mm-dd')+1?? )?? where?to_char(?to_date('2002-02-01','yyyy-mm-dd')+rnum-1,?'D'?)?? not?? in?(?'1',?'7'?)??? 查找2002-02-28至2002-02-01間除星期一和七的天數?? 在前后分別調用DBMS_UTILITY.GET_TIME,?讓后將結果相減(得到的是1/100秒,?而不是毫秒).? 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??? 11.select?to_char(sysdate,'hh:mi:ss')?TIME?from?all_objects? 注意:第一條記錄的TIME?與最后一行是一樣的?? 可以建立一個函數來處理這個問題?create?or?replace?function?sys_date?return?date?is?? begin?? return?sysdate;?? end;?? select?to_char(sys_date,'hh:mi:ss')?from?all_objects;??? 網管u家u.bitsCN.com 12.獲得小時數?SELECT?EXTRACT(HOUR?FROM?TIMESTAMP?'2001-02-16?2:38:40')?from?offer?? SQL>?select?sysdate?,to_char(sysdate,'hh')?from?dual;?? SYSDATE?TO_CHAR(SYSDATE,'HH')?? --------------------?---------------------?? 2003-10-13?19:35:21?07?? SQL>?select?sysdate?,to_char(sysdate,'hh24')?from?dual;?? SYSDATE?TO_CHAR(SYSDATE,'HH24')?? --------------------?-----------------------?? 2003-10-13?19:35:21?19??? 獲取年月日與此類似??? 13.年月日的處理?select?older_date,?? newer_date,?? years,?? months,?? abs(?? trunc(?? newer_date-?? add_months(?older_date,years*12+months?)?? )?? )?days?? from?(?select?? trunc(months_between(?newer_date,?older_date?)/12)?YEARS,?? mod(trunc(months_between(?newer_date,?older_date?)),?? 12?)?MONTHS,?? newer_date,?? older_date?? from?(?select?hiredate?older_date,?? add_months(hiredate,rownum)+rownum?newer_date?? from?emp?)????? )??? 14.處理月份天數不定的辦法?select?to_char(add_months(last_day(sysdate)?+1,?-2),?'yyyymmdd'),last_day(sysdate)?from?dual? 15.找出今年的天數?select?add_months(trunc(sysdate,'year'),?12)?-?trunc(sysdate,'year')?from?dual? 閏年的處理方法?to_char(?last_day(?to_date('02'?||?:year,'mmyyyy')?),?'dd'?)?轉載于:https://www.cnblogs.com/sdgxbooy/archive/2008/10/10/8903021.html
總結
以上是生活随笔為你收集整理的oracle中日期处理方法 汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据 流式计算 apache stor
- 下一篇: 8-[多线程] 进程池线程池