乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      oracle 日期函數(shù)

       昵稱739670 2010-01-15

      在oracle數(shù)據(jù)庫的開發(fā)中,常因為時間的問題大費周章,所以特地將ORACLE數(shù)據(jù)的日期函數(shù)收藏致此。乃供

      他日所查也。

      先來個我系統(tǒng)開發(fā)時候用到的

       

      --根據(jù)日期得到第幾周
      select to_char(to_date('2009-12-28','yyyy-mm-dd'),'iw') from dual;
      select to_char(sysdate,'iw') from dual;


        add_months(d,n) 日期d加n個月
        last_day(d) 包含d的月?的最后一天的日期
        new_time(d,a,b) a?區(qū)的日期和??d在b?區(qū)的日期和??
        next_day(d,day) 比日期d?,由day指定的周幾的日期
        sysdate 當(dāng)前的系?日期和??
        greatest(d1,d2,...dn) ?出的日期列表中最后的日期
        least(d1,k2,...dn) ?出的日期列表中最早的日期
        to_char(d [,fmt]) 日期d按fmt指定的格式??成字符串
        to_date(st [,fmt]) 字符串st按fmt指定的格式?成日期?,若fmt忽略,st要用缺省格式
        round(d [,fmt]) 日期d按fmt指定格式舍入到最近的日期
        trunc(d [,fmt]) 日期d按fmt指定格式截斷到最近的日期
        to_date 字符串類型轉(zhuǎn)為換日期類型
      字符串中的相應(yīng)位置上的字符,必須符合時間范圍的限制

      查詢Oracle日期格式
      ----------------------------------


      select * from nls_database_parameters;


      得到結(jié)果如下表: 表中NLS_DATE_FORMAT表示日期格式.
      PARAMETER VALUE
      ----------------------------------- -----------------------------------
      NLS_LANGUAGE AMERICAN
      NLS_TERRITORY AMERICA
      NLS_CURRENCY $
      NLS_ISO_CURRENCY AMERICA
      NLS_NUMERIC_CHARACTERS .,
      NLS_CHARACTERSET ZHS16GBK
      NLS_CALENDAR GREGORIAN
      NLS_DATE_FORMAT DD-MON-RR
      NLS_DATE_LANGUAGE AMERICAN
      NLS_SORT  BINARY
      NLS_TIME_FORMAT HH.MI.SSXFF AM
      NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
      NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZH:TZM
      NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZH:TZM
      NLS_DUAL_CURRENCY $
      NLS_COMP  BINARY
      NLS_NCHAR_CHARACTERSET ZHS16GBK
      NLS_RDBMS_VERSION 8.1.7.0.0

      或者查詢V$NLS_PARAMETERS表,
      select * from V$NLS_PARAMETERS;
      也有類似結(jié)果

      SQL>select to_date('2004-11-12 12-07-32','yyyy-mm-dd hh24-mi-ss') value from dual;
      VALUE
      -------------------
      2004.11.12 12:07:32

      SQL>select to_date('20041015') value from dual;
      VALUE
      -------------------
      2004.10.15 00:00:00

      SQL>select to_date('20041315') value from dual;
      ERROR 位于第 1 行:
      ORA-01861: 文字與格式字符串不匹配


      sysdate 當(dāng)前日期和時間

      SQL>select sysdate value from dual;
      VALUE
      -------------------
      2003.11.23 17:09:01


      last_day 本月最后一天

      SQL>select last_day(sysdate) value from dual;
      VALUE
      -------------------
      2003.11.30 17:08:17


      add_months(d,n) 日期d后推n個月

      SQL>select add_months(sysdate,2) value from dual;
      VALUE
      -------------------
      2005.01.23 17:10:21


      next_day(d,day) 日期d之后的第一周中,指定的那天(指定星期的第幾天)是什么日期

      SQL>select next_day(sysdate,1) value from dual;
      VALUE
      -------------------
      2004.11.28 17:38:55


      [oracle/plsql]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小時格式下時間范圍為: 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è)置日期語言
      ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
      也可以這樣
      TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')

      4.
      兩個日期間的天數(shù)
      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點之前是不包含在這個范圍之內(nèi)的。
      所以,當(dāng)時間需要精確的時候,覺得to_char還是必要的
      7. 日期格式?jīng)_突問題
      輸入的格式要看你安裝的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,當(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 與最后一行是一樣的
      可以建立一個函數(shù)來處理這個問題
      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ù)

      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.不同時區(qū)的處理
      select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate
      from dual;

      19.
      5秒鐘一個間隔
      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.計算小時,分,秒,毫秒
      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)前開始下一個星期五。后面的數(shù)字是從星期日開始算起。


        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多