<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評(píng)論-209  文章-0  trackbacks-0
    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小時(shí)格式下時(shí)間范圍為:?0:00:00?-?23:59:59....?
    12小時(shí)格式下時(shí)間范圍為:?1:00:00?-?12:59:59?....?


    1.?
    日期和字符轉(zhuǎn)換函數(shù)用法(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?
    設(shè)置日期語(yǔ)言?
    ALTER?SESSION?SET?NLS_DATE_LANGUAGE='AMERICAN';?
    也可以這樣?
    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?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號(hào)中午12點(diǎn)之后和12月1號(hào)的12點(diǎn)之前是不包含在這個(gè)范圍之內(nèi)的。?
    所以,當(dāng)時(shí)間需要精確的時(shí)候,覺(jué)得to_char還是必要的?
    7.?日期格式?jīng)_突問(wèn)題?
    輸入的格式要看你安裝的ORACLE字符集的類型,?比如:?US7ASCII,?date格式的類型就是:?'01-Jan-01'?
    alter?system?set?NLS_DATE_LANGUAGE?=?American?
    alter?session?set?NLS_DATE_LANGUAGE?=?American?
    或者在to_date中寫(xiě)?
    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_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間除星期一和七的天數(shù)?
    在前后分別調(diào)用DBMS_UTILITY.GET_TIME,?讓后將結(jié)果相減(得到的是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?

    11?
    select?to_char(sysdate,'hh:mi:ss')?TIME?from?all_objects?
    注意:第一條記錄的TIME?與最后一行是一樣的?
    可以建立一個(gè)函數(shù)來(lái)處理這個(gè)問(wèn)題?
    create?or?replace?function?sys_date?return?date?is?
    begin?
    return?sysdate;?
    end;?

    select?to_char(sys_date,'hh:mi:ss')?from?all_objects;?
    12.?
    獲得小時(shí)數(shù)?

    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.?
    處理月份天數(shù)不定的辦法?
    select?to_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,'mmyyyy')?),?'dd'?)?
    如果是28就不是閏年?

    17.?
    yyyy與rrrr的區(qū)別?
    'YYYY99?TO_C?
    -------?----?
    yyyy?99?0099?
    rrrr?99?1999?
    yyyy?01?0001?
    rrrr?01?2001?

    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?35786?
    SSSSS表示5位秒數(shù)?

    20.?
    一年的第幾天?
    select?TO_CHAR(SYSDATE,'DDD'),sysdate?from?dual?
    310?2002-11-6?10:03:51?

    21.計(jì)算小時(shí),分,秒,毫秒?
    select?
    Days,?
    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?
    (?
    select?
    trunc(sysdate)?Days,?
    sysdate?-?trunc(sysdate)?A?
    from?dual?
    )?



    select?*?from?tabname?
    order?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)前開(kāi)始下一個(gè)星期五。后面的數(shù)字是從星期日開(kāi)始算起。
    posted on 2006-08-10 16:34 xzc 閱讀(2683) 評(píng)論(8)  編輯  收藏 所屬分類: Oracle

    評(píng)論:
    # re: oracle日期處理完全版[未登錄](méi) 2007-01-29 12:57 | xzc
    select 1,to_char(sysdate,'Day,Month DD,YYYY','NLS_DATE_LANGUAGE = American') from dual  回復(fù)  更多評(píng)論
      
    # re: oracle日期處理完全版 2007-09-14 12:56 | xzc
    Oracle時(shí)間日期操作
    sysdate+(5/24/60/60) 在系統(tǒng)時(shí)間基礎(chǔ)上延遲5秒
    sysdate+5/24/60 在系統(tǒng)時(shí)間基礎(chǔ)上延遲5分鐘
    sysdate+5/24 在系統(tǒng)時(shí)間基礎(chǔ)上延遲5小時(shí)
    sysdate+5 在系統(tǒng)時(shí)間基礎(chǔ)上延遲5天
    add_months(sysdate,-5) 在系統(tǒng)時(shí)間基礎(chǔ)上延遲5月
    add_months(sysdate,-5*12) 在系統(tǒng)時(shí)間基礎(chǔ)上延遲5年


    上月末的日期:select last_day(add_months(sysdate, -1)) from dual;
    本月的最后一秒:select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual
    本周星期一的日期:select trunc(sysdate,'day')+1 from dual


    年初至今的天數(shù):select ceil(sysdate - trunc(sysdate, 'year')) from dual;

    今天是今年的第幾周 :select to_char(sysdate,'fmww') from dual
    今天是本月的第幾周:SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual

    本月的天數(shù)
    SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
    今年的天數(shù)
    select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
    下個(gè)星期一的日期
    SELECT Next_day(SYSDATE,'monday') FROM dual  回復(fù)  更多評(píng)論
      
    # re: oracle日期處理完全版 2007-09-14 12:57 | xzc
    ============================================

    --計(jì)算工作日方法

    create table t(s date,e date);
    alter session set nls_date_format = 'yyyy-mm-dd';
    insert into t values('2003-03-01','2003-03-03');
    insert into t values('2003-03-02','2003-03-03');
    insert into t values('2003-03-07','2003-03-08');
    insert into t values('2003-03-07','2003-03-09');
    insert into t values('2003-03-05','2003-03-07');
    insert into t values('2003-02-01','2003-03-31');

    -- 這里假定日期都是不帶時(shí)間的,否則在所有日期前加trunc即可。
    select s,e,e-s+1 total_days,
    trunc((e-s+1)/7)*5 + length(replace(substr('01111100111110',to_char(s,'d'),mod(e-s+1,7)),'0','')) work_days
    from t;

    -- drop table t;

    引此:http://www.itpub.net/showthread.php?s=1635506cd5f48b1bc3adbe4cde96f227&threadid=104060&perpage=15&pagenumber=1


    ================================================================================

    判斷當(dāng)前時(shí)間是上午下午還是晚上

    SELECT CASE
    WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 6 AND 11 THEN '上午'
    WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 11 AND 17 THEN '下午'
    WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 17 AND 21 THEN '晚上'
    END
    FROM dual;


    ================================================================================

    Oracle 中的一些處理日期



    將數(shù)字轉(zhuǎn)換為任意時(shí)間格式.如秒:需要轉(zhuǎn)換為天/小時(shí)
    SELECT to_char(floor(TRUNC(936000/(60*60))/24))||'天'||to_char(mod(TRUNC(936000/(60*60)),24))||'小時(shí)' FROM DUAL
      回復(fù)  更多評(píng)論
      
    # re: oracle日期處理完全版[未登錄](méi) 2009-07-05 05:07 | aa
    6中的a_date是什么?  回復(fù)  更多評(píng)論
      
    # re: oracle日期處理完全版 2010-05-13 21:10 | xzc
    題目: 輸入4個(gè)值[2008,12,2009,2], 要求一段SQL, 不另創(chuàng)新表, 得到如下結(jié)果:

    12 2008-12-1 2008-12-31
    01 2009-1-1 2009-1-31
    02 2009-2-1 2009-2-28

    條件: 起始年, 起始月, 截至年, 截至月
    結(jié)果: 月份, 月的第一天, 月的最后一天
    解答:
    Sql代碼
    select to_char(tt.d, 'mm'), tt.d, last_day(tt.d)
    from (select ADD_MONTHS(zz.s, rownum - 1) d
    from (select to_date('2008' || '12' || '01', 'yyyymmdd') s,
    to_date('2009' || '02' || '01', 'yyyymmdd') e
    from dual) zz,
    (select * from user_objects)
    where rownum <= MONTHS_BETWEEN(zz.e, zz.s) + 1) tt

    select to_char(tt.d, 'mm'), tt.d, last_day(tt.d)
    from (select ADD_MONTHS(zz.s, rownum - 1) d
    from (select to_date('2008' || '12' || '01', 'yyyymmdd') s,
    to_date('2009' || '02' || '01', 'yyyymmdd') e
    from dual) zz,
    (select * from user_objects)
    where rownum <= MONTHS_BETWEEN(zz.e, zz.s) + 1) tt
    分析: 這個(gè)題目比較難, 因?yàn)榭疾炝撕芏嗟腛racle特有的函數(shù),表(視圖).

    rownum 行號(hào)
    ADD_MONTHS 日期函數(shù),給一個(gè)日期加一個(gè)月數(shù),得到這個(gè)月數(shù)后的日期
    to_date 日期函數(shù), 將一個(gè)字符以一定格式轉(zhuǎn)成日期
    to_char 字符函數(shù), 以一定格式得到字符
    last_day 日期函數(shù), 得到某日所在月的最后一天
    MONTHS_BETWEEN 日期函數(shù), 得到兩個(gè)日期間隔的月數(shù)
      回復(fù)  更多評(píng)論
      
    # re: oracle日期處理完全版 2010-05-14 20:35 | xzc
    select to_char(cur_month, 'MM'), cur_month, last_day(cur_month)
    from (select aa.begin_month, rownum, add_months(aa.begin_month, rownum - 1) cur_month
    from (select to_date('2008' || '12', 'YYYYMM') begin_month, to_date('2009' || '02', 'YYYYMM') end_month
    from dual) aa,
    all_objects bb
    where rownum <= months_between(aa.end_month, aa.begin_month) + 1)
      回復(fù)  更多評(píng)論
      
    # re: oracle日期處理完全版[未登錄](méi) 2012-06-01 09:36 | xzc
    --當(dāng)月的日列表
    select to_char(sysdate - rownum, 'YYYYMMDD') day_id from user_objects where rownum < to_char(sysdate, 'DD');
    --某月的日列表
    select to_char(to_date('201007', 'YYYYMM') - 1 + rownum, 'YYYYMMDD') day_id
    from user_objects
    where rownum <= to_char(last_day(to_date('201007', 'YYYYMM')), 'DD');  回復(fù)  更多評(píng)論
      
    # re: oracle日期處理完全版[未登錄](méi) 2012-06-01 10:37 | xzc
    --周末
    select day_id, to_char(day_id, 'DAY')
    from (select to_date('201205', 'YYYYMM') - 1 + rownum day_id
    from user_objects
    where rownum <= to_char(last_day(to_date('201205', 'YYYYMM')), 'DD'))
    where to_char(day_id, 'd') in (1, 7);
    select to_char(day_id, 'YYYYMMDD')
    from (select to_date('20120526', 'YYYYMMDD') - rownum + 1 day_id
    from user_objects
    where rownum <= substr(20120526, 7, 2))
    where to_char(day_id, 'd') in (1, 7);
    --星期一~星期五
    select day_id, to_char(day_id, 'DAY')
    from (select to_date('201205', 'YYYYMM') - 1 + rownum day_id
    from user_objects
    where rownum <= to_char(last_day(to_date('201205', 'YYYYMM')), 'DD'))
    where to_char(day_id, 'd') in (2, 3, 4, 5, 6);
    select to_char(day_id, 'YYYYMMDD')
    from (select to_date('20120526', 'YYYYMMDD') - rownum + 1 day_id
    from user_objects
    where rownum <= substr(20120526, 7, 2))
    where to_char(day_id, 'd') in (2, 3, 4, 5, 6);  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 久久免费视频一区| 亚洲人成www在线播放| 亚洲午夜国产精品无码| 亚洲AV伊人久久青青草原| 国产又黄又爽又刺激的免费网址| 最近免费中文字幕视频高清在线看| 91高清免费国产自产拍2021| 久久免费的精品国产V∧| 亚洲免费视频在线观看| 99久久久国产精品免费牛牛 | 亚洲欧洲国产日韩精品| 亚洲AV无码专区国产乱码电影| 婷婷亚洲综合五月天小说| 亚洲AV人无码综合在线观看| 99久久精品国产亚洲| 亚洲欧洲国产精品久久| 99999久久久久久亚洲| 亚洲精品无码久久| 真正全免费视频a毛片| xvideos永久免费入口| 免费萌白酱国产一区二区三区| 久久精品免费观看国产| 1区2区3区产品乱码免费| 99无码人妻一区二区三区免费| 国产精品免费观看久久| 在线观看亚洲免费| 亚洲精品NV久久久久久久久久| 国产亚洲精品a在线观看app| 亚洲五月六月丁香激情| 亚洲国产系列一区二区三区| 精品久久久久亚洲| 久久av免费天堂小草播放| 91麻豆国产免费观看| 女人被男人躁的女爽免费视频 | 免费女人高潮流视频在线观看| 久久精品国产免费观看| 精品剧情v国产在免费线观看| 亚洲国产精品激情在线观看| 人人狠狠综合久久亚洲88| 亚洲性色成人av天堂| 国产亚洲综合久久|