--Oracle中的函数 nvl to_char to_date count min max sum avg
--虚表(dual):如果只是对常量进行运算(即数据不来自某张表),需要展示运算结果的化,可以使用虚表dual来保证语法完整
select 1+1 from dual
--时间相关的函数
--sysdate:是Oracle提供的系统字段,用于表示当前的系统时间
--查询当前时间(精度到秒)
select sysdate from dual
--trunc:可以使用 trunc对时间进行截取,返回精度到天的时间信息
select trunc(sysdate) from dual
--to_date 字符转Date
select to_date('1996-08-02','yyyy-mm-dd') from dual
--to_char Date转对应字符
select to_char(sysdate,'yyyy.mm.dd hh:mi:ss') from dual
--查询员工表中所有人的入职年份
select emp.*,to_char(hiredate,'yyyy') as 入职年份 from emp
--months_between(date1,date2):返回date1与 date2相隔的月份
-- 2020.1.20 2020.5.29
select months_between(to_date('2020-05-29','yyyy-mm-dd'),to_date('2020-01-20','yyyy-mm-dd')) from dual;
--查询员工表中工作了30年以上的员工信息
select * from emp where months_between(sysdate,hiredate)/12 > 30
--date1- date2:两个时间直接相减返回的是这两个时间相差的天数
--返回2020.1.20 2020.5.29 之间相差多少天
select to_date('2020-05-29','yyyy-mm-dd') - to_date('2020-01-20','yyyy-mm-dd') from dual
-- Date +或- 数字: 返回 Date之后或之前多少天的时间值
--计算 当前时间100天之后的时间信息
select trunc(sysdate) + 100 from dual
-- last_day(date):返回date所在月份的最后一天
select last_day(trunc(sysdate)) from dual
--查询员工表中,入职时间是当月倒数第3天员工信息
select * from emp where hiredate = last_day(hiredate)-2