天天看點

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_MonthFROM 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])    功能同上

繼續閱讀