Sql 随笔

新进入一家公司,保险行业,系统比较老,所以java代码技术没什么好学的,但是写算法,写存储过程,sql语句比较多,

以此篇文章记录自己的sql历程,完全是流水账式记录,大家谨慎阅读!

 1,查询两个日期相差多少个月,就用months_between,注意是前边时间减去后边的,如果前边小,会减出负数

select months_between(to_date('2006-05-17','YYYY-MM-DD'),to_date('2006-01-01','YYYY-MM-DD')) from dual;

 如果不想要后边的小数部分,就用floor

select floor(months_between(to_date('2006-05-17','YYYY-MM-DD'),to_date('2006-01-01','YYYY-MM-DD'))) from dual;

 

如果说你要查询某个人入职第几年的话,可以再除以12个月,像保险行业,每年都有不同的业务指标,可能会用到

select floor(months_between(sysdate,to_date('2014-07-23','yyyy-mm-dd'))/12)+1 from dual; 

 

执行结果为1.

如果你想计算某个数,返回百分数,并且保留几位小数

 select  (ROUND(7/9,4)*100)||'%' from dual; 
 select   trunc(7/9,4)*100||'%' from dual ;

执行结果是: 77.78% 和 77.77%
查询当月的第一天和最后一天
select to_char(trunc(sysdate,'MONTH'),'yyyy-mm-dd') First_DayOfMonth
       ,to_char(last_day(trunc(sysdate,'MONTH')),'yyyy-mm-dd') Last_DayOfMonth 
from dual
 
执行结果是:
2014-10-01,2014-10-31
   长度位数不够补0
 select lpad('123456', 10, '0') from dual
   运行结果:0000123456
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值