函数分为系统内置函数、自定义函数,根据函数的返回结果分为:
单行函数
和组函数
- 单行函数:一条记录返回一个结果
- 组函数(多行函数):多条记录返回一个结果
一、单行函数
1、日期函数
1.1、sysdate|current_date函数
sysdate|current_date返回当前日期
-- 获取当前日期时间
select current_date from dual
select sysdate from dual
运行结果 |
---|
1.2、add_months函数
add_months(日期,x):返回加上x月后的日期
-- 当前时间加上2月后的时间
select add_months(sysdate,2) from dual
运行结果 |
---|
1.3、last_day函数
last_day(日期):返回当前月份的最后一天
-- 本月的最后一天
select last_day(sysdate) from dual
运行结果 |
---|
1.4、months_between函数
months_between(日期1,日期2):返回日期1和日期2之间相差的月份数量
-- 时间差
select months_between(sysdate,sysdate-125) from dual
运行结果 |
---|
Tips:日期可以参与加减运算
1.5、next_day函数
next_day(日期,‘x’):返回下一个x的日期
-- 下一个周五
select next_day(sysdate,'星期五') from dual
运行结果 |
---|
星期几可以使用数字代替:
1->星期日,2->星期一,3->星期二,4->星期三,5->星期四,6->星期五,7->星期六
2、日期转换函数
2.1、to_char函数
to_char(日期,m):把日期转换为m样式的字符串
-- 日期转换为字符串
select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual
运行结果 |
---|
Tips: 如果字符串样式里要使用中文,需要给中文加上""
,hh24
代表是24小时制,mi
是分,ss
是秒
2.2、to_date函数
刚好和上面的相反,把字符串转换为日期
-- 字符串转换为日期
select to_date('2020-3-11','yyyy-mm-dd') from dual
运行结果 |
---|
3、其它函数
3.1、nvl
nvl(参数1,参数2):如果参数1为null,则返回参数2
select ename,nvl(comm,0) from emp
运行结果 |
---|
3.2、decode
decode(参数,参数1,参数2,参数3,参数4,…):对参数进行判断,如果参数是参数1,就返回参数2,如果是参数3就返回参数4…
select decode(deptno,10,'十',20,'二十',30,'三十','默认时-四十') from dept
运行结果 |
---|
3.2、case when then else end
类似于java的switch选择语句
select case deptno
when 10 then
'十'
when 20 then
'二十'
when 30 then
'三十'
else
' 默认四十'
end
from dept
运行结果 |
---|
二、组函数
常用的组函数:count、max、min、sum、avg
- count:记录数量统计
- max:最大值
- min:最小值
- sum:求和
- avg:平均值
Tips:组函数仅在选择列表和having子句中有效,出现组函数,select中只能有组函数或者分组字段
select count(ename) 员工数量,max(sal) 最高工资,min(sal) 最低工资,sum(sal) 工资总和,avg(sal) 平均工资 from emp
运行结果 |
---|