1. 程式人生 > >Oracle資料庫基礎知識點

Oracle資料庫基礎知識點

3.3、日期常用函式
—— last_day();
    返回當月的最後一天
    SELECT LAST_DAY(SYSDATE) FROM DUAL;
    指定返回15年2月份的最後一天是多少
    SELECT LAST_DAY('01-2月-15')FROM DUAL;
    
——add_monthS(DATE ,I)
    I可以正數也可以是負數也可以是小數,小數位自動捨棄,正數往後,負數往前
    查詢員工入職後的20週年紀念日。
    SELECT ENAME,ADD_MONTHS(HIREDATE,20*12)AS A FROM EMP;
    計算3個月後的今天是哪一天,星期幾?
    SELECT TO_CHAR((ADD_MONTHS(SYSDATE,-10*12)),'YYYY-MM-DD DAY')FROM DUAL;

——months_between()
    返回兩個日期之間間隔的月數, 如果間隔的月之間不為整數就返回小數,第二個引數比第一個引數時間

晚的話會返回一個負數     
    select ename, months_between(hiredate,sysdate)hiredate from emp;
    
——next_day()
    查詢下個禮拜幾是哪一天, 中間引數在中文環境可以寫中文,英文環境下要寫英文的星期幾,
    嫌麻煩的可以採用數字來1-7代替,注意1表示的星期天,7表示的星期六
    下個禮拜三是哪一天
    SELECT TO_CHAR((NEXT_DAY(SYSDATE,'星期三')),'YYYY-MM-DD DAY')AS NEXTWEEK FROM DUAL;
    下個禮拜四是哪一天
    SELECT TO_CHAR((NEXT_DAY(SYSDATE,5)),'YYYY-MM-DD DAY')AS NEXTWEEK FROM DUAL;

注意:如果還未過本週的週四,那麼顯示的是本週週四
    
——比較函式:least()
*引數型別必須匹配,如果後面引數型別,不同於前面的引數的資料型別,會做自動轉換,能轉換就比較,
不能轉換就報錯。但自動轉換要注意符合前面引數的格式
    比較後,哪個小返回哪個。
    SELECT LEAST(SYSDATE,'09-9月-16')FROM DUAL;

——extract():抽取或提取
    從當前的系統時間中提取今年的數字
    SELECT EXTRACT(YEAR FROM SYSDATE)AS YEAR FROM DUAL;
    從指定的時間中獲取hour
    SELECT EXTRACT(HOUR FROM TIMESTAMP'2016-10-10 15:35:23)FROM DUAL;