Oracle常用功能函数 -- 日期

    一、字符转日期

    to_date(str, format); 以2013-06-06 19:30:45为例

        Year:      
        yy two digits 两位年                    显示值:13
        yyy three digits 三位年                显示值:013
        yyyy four digits 四位年                显示值:2013

        Month:      
        mm    number     两位月              显示值:06
        mon    abbreviated 字符集表示          显示值:6月,若是英文版,显示jun     
        month spelled out 字符集表示          显示值:6月,若是英文版,显示june 

        Day:      
        dd    number         当月第几天        显示值:06
        ddd    number         当年第几天        显示值:06
        dy    abbreviated 当周第几天简写    显示值:星期三,若是英文版,显示wed
        day    spelled out   当周第几天全写    显示值:星期三,若是英文版,显示Wednesday        
        ddspth spelled out, ordinal twelfth 

        Hour:
        hh    two digits 12小时进制            显示值:07
        hh24 two digits 24小时进制            显示值:19

        Minute:
        mi    two digits 60进制                显示值:30

        Second:
        ss    two digits 60进制                显示值:45

        其它
        Q     digit         季度                  显示值:2

        WW    digit         当年第几周            显示值:21
        W    digit          当月第几周            显示值:1

        24小时格式下时间范围为: 0:00:00 - 23:59:59....      

        12小时格式下时间范围为: 1:00:00 - 12:59:59 .... 

    二、求某天为星期几

        >: select to_char(to_date('2013-06-06','yyyy-mm-dd'),'day') from dual;          

        >: 星期三

        〉: select to_char(to_date('2013-06-06','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;     

        〉: wednesday

    三、求某天为当年的第几天

        〉:select TO_CHAR(SYSDATE,'DDD'),sysdate from dual;

    四、next_day(date, d)

        其中 date为日期,d参数为

              Monday-Sunday, for format code DAY      
              Mon-Sun, for format code DY      
              1-7, for format code D

    五、获取上月,当月以及下月的第一天和最后一天

    〉:SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,
       Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
       Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
       LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
FROM dual;    

    六、日期计算

        1、两个日期间隔天

        〉:select floor(sysdate - to_date('20130601','yyyymmdd')) from dual; 

        〉: 5

        2、两个日期间隔月

        〉:select ceil(months_between(to_date('01-31-2013','MM-DD-YYYY'),to_date('06-06-2013','MM-DD-YYYY'))) "MONTHS" FROM DUAL;

        3、两个日期间隔年

        〉:select floor(to_number(sysdate-to_date('2013-01-01 15:55:03','yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from dual;

        4、两个日期间隔小时        

        〉:select floor(to_number(sysdate-to_date('2013-01-01 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from dual;

        5、两个日期间隔分钟

        〉:select floor(to_number(sysdate-to_date('2013-01-01 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from dual;

        6、两个日期间隔秒

        〉:select floor(to_number(sysdate-to_date('2013-01-01 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual;

    七、日期函数

    1、round(date[, format])    获取指定日期的最近format格式对应的数字,如format为year,则为当前年的1月1日,即2013-01-01;format为month,则为当前月的1日,即2013-06-01;format为day,则为当前星期的星期天,即2013-01-01。

    2、trunc(date[, format])    功能同上

    八、获取最大日期

        〉:select greatest(date_column) from TAB;

你可能感兴趣的:(Oracle常用函数)