zoukankan      html  css  js  c++  java
  • 转:oracle日期函数集锦

    转自:http://www.javaeye.com/topic/190221

    一、 常用日期数据格式


    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 月份数

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

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

    4.RM 月份的罗马表示 (V在罗马数字中表示 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 当年第几周 (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 当年第几天 (2007年5月29日为2007年第149天)

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

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

    9. DD 当月第几天

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

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

    10.D 周内第几天

    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进制小时数 (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

    二、常用时间函数

    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间相差月数

    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()返回当前会话时区中的当前日期 。

    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,即为查找当前月份的前三个月中

    的每周五的日期。


    5.得到系统当前月及以后的日期

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

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

    to_date 字符串类型转为换日期类型
    字符串中的相应位置上的字符,必须符合时间范围的限制  

    14.MI 分钟数(0~59)
    提示注意不要将MM格式用于分钟(分钟应该使用MI)。MM是用于月份的格式,将它用于分钟也能工作,但结果是错误的。

    15.SS 秒数(0~59)

  • 相关阅读:
    Effective Java 19 Use interfaces only to define types
    Effective Java 18 Prefer interfaces to abstract classes
    Effective Java 17 Design and document for inheritance or else prohibit it
    Effective Java 16 Favor composition over inheritance
    Effective Java 15 Minimize mutability
    Effective Java 14 In public classes, use accessor methods, not public fields
    Effective Java 13 Minimize the accessibility of classes and members
    Effective Java 12 Consider implementing Comparable
    sencha touch SortableList 的使用
    sencha touch dataview 中添加 button 等复杂布局并添加监听事件
  • 原文地址:https://www.cnblogs.com/Donal/p/1825219.html
Copyright © 2011-2022 走看看