posts - 82, comments - 269, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          oracle日期函數(shù)集錦

          Posted on 2008-07-10 13:42 itspy 閱讀(2735) 評論(2)  編輯  收藏 所屬分類: 其它技術(shù)

          來源:
          http://www.javaeye.com/topic/190221
          http://oracle.javaeye.com/

          一、 常用日期數(shù)據(jù)格式


          1.Y或YY或YYY 年的最后一位,兩位或三位

          SQL> Select to_char(sysdate,'Y') from dual;

          TO_CHAR(SYSDATE,'Y')
          --------------------
          7

          SQL> Select to_char(sysdate,'YY') from dual;

          TO_CHAR(SYSDATE,'YY')
          ---------------------
          07

          SQL> Select to_char(sysdate,'YYY') from dual;

          TO_CHAR(SYSDATE,'YYY')
          ----------------------
          007

          2.Q 季度 1~3月為第一季度,2表示第二季度。

          SQL> Select to_char(sysdate,'Q') from dual;

          TO_CHAR(SYSDATE,'Q')
          --------------------
          2

          3.MM 月份數(shù)

          SQL> Select to_char(sysdate,'MM') from dual;

          TO_CHAR(SYSDATE,'MM')
          ---------------------
          05

          4.RM 月份的羅馬表示 (V在羅馬數(shù)字中表示 5)

          SQL> Select to_char(sysdate,'RM') from dual;

          TO_CHAR(SYSDATE,'RM')
          ---------------------
          V

          5.Month 用9個字符長度表示的月份名

          SQL> Select to_char(sysdate,'Month') from dual;

          TO_CHAR(SYSDATE,'MONTH')
          ------------------------
          5月

          6.WW 當(dāng)年第幾周 (2007年5月29日為2007年第22周)

          SQL> Select to_char(sysdate,'WW') from dual;

          TO_CHAR(SYSDATE,'WW')
          ---------------------
          22

          7.W 本月第幾周 (2007年5月29日為5月第5周)

          SQL> Select to_char(sysdate,'W') from dual;

          TO_CHAR(SYSDATE,'W')
          --------------------
          5

          8.DDD 當(dāng)年第幾天 (2007年5月29日為2007年第149天)

          SQL> Select to_char(sysdate,'DDD') from dual;

          TO_CHAR(SYSDATE,'DDD')
          ----------------------
          149

          9. DD 當(dāng)月第幾天

          SQL> Select to_char(sysdate,'DD') from dual;

          TO_CHAR(SYSDATE,'DD')
          ---------------------
          29

          10.D 周內(nèi)第幾天

          SQL> Select to_char(sysdate,'D') from dual;

          TO_CHAR(SYSDATE,'D')
          --------------------
          3

          11.DY 中文的星期幾 ( (2007年5月29日為星期二))

          SQL> Select to_char(sysdate,'DY') from dual;

          TO_CHAR(SYSDATE,'DY')
          ---------------------
          星期二

          12.HH或HH12 12進制小時數(shù) (16:09分為用12小時制計時為4點)

          SQL> Select to_char(sysdate,'HH') from dual;

          TO_CHAR(SYSDATE,'HH')
          ---------------------
          04

          13.HH24 24小時制

          SQL> Select to_char(sysdate,'HH24') from dual;

          TO_CHAR(SYSDATE,'HH24')
          -----------------------
          16

          二、常用時間函數(shù)

          1.trunc(sysdate,'Q') 本季度第一天

          SQL> select trunc(sysdate,'Q') from dual;

          TRUNC(SYSDATE,'Q')
          ------------------
          2007-4-1

          2.trunc(sysdate,'D') 本周的第一天(周日)

          SQL> select trunc(sysdate,'D')from dual;

          TRUNC(SYSDATE,'D')
          ------------------
          2007-5-27

          3.last_day(sysdate) 本月最后一天

          SQL> select last_day(sysdate) from dual;

          LAST_DAY(SYSDATE)
          -----------------
          2007-5-31 15:20:3

          4.add_months(sysdate,2) 日期sysdate后推2個月


          SQL> select add_months(sysdate,2) from dual;

          ADD_MONTHS(SYSDATE,2)
          ---------------------
          2007-7-29 15:21:14

          5.next_day(sysdate,2) 日期sysdate之后的第一周中,第2(指定星期的第幾天)是什么日期

          SQL> select next_day(sysdate,2) from dual;

          NEXT_DAY(SYSDATE,2)
          -------------------
          2007-6-4 15:22:10

          6.Months_between(f,s) 日期f和s間相差月數(shù)

          SQL> select months_between(sysdate,to_date('2007-04-12','yyyy-mm-dd'))from dual;

          MONTHS_BETWEEN(SYSDATE,TO_DATE
          ------------------------------
          1.56909908900836


          7.得到SYSDATE+5所在的月份

          SQL> SELECT to_char(SYSDATE+5,'mon','nls_date_language=american') FROM dual;

          TO_CHAR(SYSDATE+5,'MON','NLS_D
          ------------------------------
          jun

          8.current_date()返回當(dāng)前會話時區(qū)中的當(dāng)前日期 。

          9.select dbtimezone from dual;

          10.extract()找出日期或間隔值的字段值

          SQL> select extract(month from sysdate) "This Month" from dual;

          This Month
          ----------
          5
          SQL> select extract(year from sysdate) "This year" from dual;

          This year
          ----------
          2007
          SQL> select extract(month from add_months(sysdate,2)) " Month" from dual;

          Month
          ----------
          7


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

          三、一些實踐后的用法:

          1.上月末天:
          select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;

          2.上月今天
          SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;

          3.上月首天
          SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;

          4.要找到某月中所有周五的具體日期

          SELECT to_char(b.a,'YY-MM-DD')
          FROM ( SELECT trunc(SYSDATE,'mm')+ROWNUM-1 a
          FROM dba_objects where rownum < 32 ) b
          WHERE to_char(b.a,'day')='星期五';


          如果把where to_char(t.d, 'MM') = to_char(sysdate, 'MM')改成sysdate-90,即為查找當(dāng)前月份的前三個月中

          的每周五的日期。


          5.得到系統(tǒng)當(dāng)前月及以后的日期

          select trunc(sysdate, 'MM')+ROWNUM-1 FROM dba_objects ;

           

          -----------------------------------

          to_date 字符串類型轉(zhuǎn)為換日期類型
          字符串中的相應(yīng)位置上的字符,必須符合時間范圍的限制  

          14.MI 分鐘數(shù)(0~59)
          提示注意不要將MM格式用于分鐘(分鐘應(yīng)該使用MI)。MM是用于月份的格式,將它用于分鐘也能工作,但結(jié)果是錯誤的。

          15.SS 秒數(shù)(0~59)


          評論

          # re: oracle日期函數(shù)集錦  回復(fù)  更多評論   

          2008-12-02 11:19 by itspy
          select date '2008-12-02' from dual ;

          '12-Dec-2008'

          Oracle 兩種時間簡寫方式

          # re: oracle日期函數(shù)集錦  回復(fù)  更多評論   

          2009-03-11 19:30 by itspy
          sqlserver的有用的日期函數(shù)
          http://www.sqlserver.com.cn/c2l0ZS9zaG93Lmh0bWw_bXlpZD0yMDY=url.html


          1.一個月第一天的
          SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

          2.本周的星期一
          SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

          3.一年的第一天
          SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

          4.季度的第一天
          SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

          5.當(dāng)天的半夜
          SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

          6.上個月的最后一天
          SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

          7.去年的最后一天
          SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

          8.本月的最后一天
          SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

          9.本年的最后一天
          SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

          10.本月的第一個星期一
          select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
          主站蜘蛛池模板: 山东| 汉川市| 阿克陶县| 大宁县| 祁连县| 睢宁县| 文山县| 马山县| 博白县| 闽清县| 永嘉县| 博湖县| 卓尼县| 安陆市| 娱乐| 沙雅县| 济源市| 汝阳县| 廊坊市| 通渭县| 邹平县| 鹿泉市| 栖霞市| 铜川市| 辽源市| 金堂县| 渭源县| 沙雅县| 阜新市| 四会市| 灵武市| 额敏县| 德清县| 沭阳县| 湘乡市| 大石桥市| 辽源市| 台东县| 常德市| 铜陵市| 西丰县|