Oracle日期类的语句查询——难啊啊啊啊啊,受不了

trunc:截断取整——不是  四舍五入 


 

 

instr函数为字符查找函数,其功能是查找一个字符串在另一个字符串中首次出现的位置。
没有找到,instr函数返回0。 

translate(m,n,s):把m中含有n的换成s

substr(ename,1,3) :字符截取函数

1. 显示满40年服务年限的员工的姓名和雇佣日期
months_between(m,n):用于计算m和n之间有几个月

select ename,hiredate from emp where (months_between(sysdate,hiredate)/12)>40;

mod(m,n):用于计算m和n的余数
求天数:
 --计算相差几个月
        select months_between(sysdate,hiredate) from emp;
 --ADD_MONTHS(d,n):时间点d再加上n个月
 --为了年份和月份相同
        select ADD_MONTHS(hiredate,months_between(sysdate,hiredate)) from emp;
 --直接相减得到天数
        select SYSDATE - ADD_MONTHS(hiredate,months_between(sysdate,hiredate))         from emp;

2. 以年月日的方式显示所有员工的服务年限
SELECT ename, hiredate, 

计算相差几个月,除以12取年取整
trunc(MONTHS_BETWEEN(SYSDATE,hiredate) /12)  year  ,
先计算有多少个月,在计算余数剩几个月,在取整
trunc(MOD(MONTHS_BETWEEN(SYSDATE,hiredate) ,  12 ) ) months  , 

trunc(SYSDATE - ADD_MONTHS(hiredate,months_between(sysdate,hiredate))) day
FROM emp ;

3. 使用函数显示姓名字段的任何位置包含’A’的所有员工的姓名
select ename from emp where instr(ename,'A')<>0;

4. 对于每个员工,显示其加入公司的天数
select ename,trunc(sysdate-hiredate) from emp;

5. 找出在任意年份2月受聘的所有员工
select ename,to_char(hiredate,'MM') from emp where to_char(hiredate,'MM')=02;

6. 显示所有员工的姓名,用a代替A
select ename,translate(ename,'A','a') from emp;

7. 显示所有员工姓名的前三个字符
select substr(ename,1,3)from emp;

8. 以首字母大写的方式显示员工的姓名
select initcap(ename) from emp;

9. 显示不带有’R’的员工姓名
select ename from emp where instr(ename,'R')=0;

10. 找出各月倒数第3天受雇的所有员工
select ename,hiredate from emp where hiredate=last_day(hiredate)-2;

11. 统计每年雇佣的人数
select to_char(hiredate,'yyyy'),count(*) from emp group by to_char(hiredate,'yyyy');
select extract(year from hiredate) year,count(*) from emp group by extract(year from hiredate);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值