您好,登錄后才能下訂單哦!
函數的分類
單行函數:一個input對應一個output,input和output存在一一對應的關系 如lower
組函數:多個input,但是只對應一個output。如 sum()
==========================================================
單行函數
特點:
每行返回一個結果,輸入輸出存在一一對應的關系
能嵌套使用 ,一個函數的輸出能做另外一個函數的輸入 如:select lowner(upper('aa')) from dual;
傳入的變量可以是列的值,也可以是表達式。 如 select lower(ename) from emp;
==========================================================
1、數字函數
對數字進行操作,是加減乘除的補充
SQL>select round(45.926,2) from dual; --四舍五入,第二位保留幾個小數點
SQL>select trunc(45.926,2) from dual; --直接截取,不進行四舍五入
SQL>select mod(10,3) from dual; --求余數
2、日期函數
oracle數據庫存儲日期的默認顯示格式是DD-MON-YY
修改日期顯示格式:
alter session set nls_date_format='<需要的格式>';
3、SYSDATA:查看系統時間
SQL>select sysdate from dual; --查看系統當前時間
SQL>select sysdate,sysdate-7 from dual; --減1星期
SQL>select sysdate,sysdate-1 from dual; --減1天
SQL>select sysdate,sysdate-1/24 from dual; --減1小時
SQL>select sysdate,sysdate-1/24/60 from dual; --減1分鐘
SQL>select sysdate,sysdate-1/24/60/60 from dual; --減1秒
4、日期處理函數
現有日期加上或者減去一個值會得到一個日期。如 select sysdate,sysdate-7 from dual;
兩個日期相減可以得到兩個日期的天數(時間間隔) 如 select (sysdate-hiredate)/7 weeks from emp;
①months_between 兩個日期之間有多少個月
SQL>select months_between(sysdate,sysdate-1000) from dual;
②add_months 指定日期下加多少個月
SQL>select add_months(sysdate,2) from dual;
③last_date 指定日期的最后一天
SQL>select last_day(sysdate) from dual;
5、日期的四舍五入:
對年份,按照1-6月,7-12月進行四舍五入
對月份,按照1-15,15-31日進行四舍五入
對日,按照星期天到星期三,注意:每周的開始是星期天。
SQL> select sysdate from dual;
SYSDATE
------------
16-MAY-16 當前是16年5月16日
==========================================================
SQL> select round(sysdate,'year') from dual;
----對年進行四舍五入,也就是精確到年份,現在是5月,沒有過6月,所以結果為16-1-1
ROUND(SYSDATE)
------------
01-JAN-16
==========================================================
SQL> select round(sysdate+60,'year') from dual; -5月16日加60天,已經到了7月,所以結果為17-1-1
ROUND(SYSDATE)
------------
01-JAN-17
==========================================================
SQL> select round(sysdate,'month') from dual;
-----對月份進行四舍五入,也就是精確到月份。現在是16號,過了15,號 所有結果為下一個月1日
ROUND(SYSDATE)
------------
01-JUN-16
==========================================================
SQL> select round(sysdate+22,'month') from dual;
----現在是5月16號,22天后是7月7日, 7號沒有過15,所以結果為16-07-01
ROUND(SYSDATE)
------------
01-JUL-16
==========================================================
SQL> !date
Mon May 16 22:47:25 CST 2016
2016年5月16日,周一, 本周的起始時間是 5月15日(每周日為一個星期的開始,周六為一個星期的結束)
==========================================================
SQL>select round(sysdate,'day') from dual;
----對日進行四舍五入,也就是看星期幾 5月16日是星期一,沒過星期三,所以不“進位”,顯示本周第一天
ROUND(SYSDATE)
------------
15-MAY-16
==========================================================
SQL>select round(sysdate+3,'day') from dual;
----16日是星期一,加三天就是星期四,超過了星期三,所以進位,顯示下一周的星期一
==========================================================
SQL>select round(sysdate-3,'day') from dual;
----星期一減三天是上個星期的星期五,超過了星期三,所以進位,顯示當前周的下一個星期一,也就是15號
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。