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

          oracle日期函數(shù)集錦

          Posted on 2008-07-10 13:42 itspy 閱讀(2737) 評(píng)論(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個(gè)字符長(zhǎng)度表示的月份名

          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進(jìn)制小時(shí)數(shù) (16:09分為用12小時(shí)制計(jì)時(shí)為4點(diǎn))

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

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

          13.HH24 24小時(shí)制

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

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

          二、常用時(shí)間函數(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個(gè)月


          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)前會(huì)話時(shí)區(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


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

          三、一些實(shí)踐后的用法:

          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)前月份的前三個(gè)月中

          的每周五的日期。


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

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

           

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

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

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

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


          評(píng)論

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

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

          '12-Dec-2008'

          Oracle 兩種時(shí)間簡(jiǎn)寫方式

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

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


          1.一個(gè)月第一天的
          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.上個(gè)月的最后一天
          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.本月的第一個(gè)星期一
          select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)
          主站蜘蛛池模板: 栾城县| 犍为县| 柳州市| 巩义市| 株洲市| 鹤峰县| 濉溪县| 东莞市| 温州市| 乌什县| 武义县| 澄江县| 海门市| 拉萨市| 高密市| 科尔| 博爱县| 沙坪坝区| 来凤县| 竹山县| 密云县| 柏乡县| 雅江县| 景洪市| 南丹县| 朝阳区| 鄂托克前旗| 娄底市| 营山县| 长泰县| 舟山市| 商洛市| 瓮安县| 磐安县| 兴业县| 罗城| 泽州县| 卢氏县| 青河县| 揭西县| 万山特区|