oracle的to_date()与concat()函数使用实例

oracle的to_date()与concat()函数使用实例

出于业务需求,和数据库历史原因,业务需要在表中寻找出在个时间前12个月的某些数据,然而数据库存储的时间的分开年月存储,而且是采用varchar2进行存储的数据,所以首先要进行的两个年月字段的数据的拼接,这时候就采用oracle提供的concat()函数,
concat()传进去两个字符串,然后返回一个新的字符串,如:
concat(data_year, data_month)
然后得到一个年月拼成的新串后,这时候,就可以使用另一个函数to_date(),to_date()有许多用法,主要是两个参数,to_date(str,format);
str为字符串,format为格式,如下面所示,下面把上面得到的拼接好的字符串进行年月转换:
to_date(concat(data_year, data_month),'yyyymm')

这时候就得到一个日期了,然后根据日期相减,得到我们需要的区间,这里采用的是-号,-interval ‘12’ month,就是指定日期减去对应的月数,如需其他参数,请查询网上, 最后sql具体如下所示:

select to_date(concat(data_year, data_month),'yyyymm') as date_time from paycard_e_quota_info 
where to_date(concat(data_year, data_month),'yyyymm')
between to_date(concat('2017', '05'),'yyyymm')- interval '12' month 
and to_date(concat('2017', '05'),'yyyymm')- interval '1' month ;

执行该sql以后就会的到下面结果:

如有错误,请指出,毕竟是个菜鸟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值