sql踩坑总结-怎么给日期加/减年月日?

今天工作遇到一个难题,就是数据库中存储的数据为

orpvliddt-生效期,日期,

orpvdpdopt-到期类型:1-指定有效期,2-指定到期日期

orpvdpddt-到期日:日期,

orppvdpd-有效期:int

orpvdpdunit-有效期单位:1-月,2-年

我的目标是加工出来一个明确的到期日以便后续操作处理。

第一步,我在网上搜索sql函数,发现一个函数,DATEADD()函数,他的基本格式如下:

dateadd(year,2,orpddt)

但是我尝试了一下不行,可能是因为这个函数是sql server 的函数,oracle和gbase用不了。

随后我发现 interval这个关键字可以解决我的问题。基本格式如下:
 

orpddt + interval '1' year

这里有趣的是,这个"1"如果是负数"-1"的话,就会使日期减一年。

最后我的代码如下:

case 
when b.orpvdpdopt='2' 
then b.orpvdpddt
when b.orpvdpdopt='1' and b.orpvdpdunit='2'
then b.orpvliddt+interval(to_number(b.orppvdpd))year
when b.orpvdpdopt='1' and b.orpvdpdunit='1'
then b.orpvliddt+interval(to_number(b.orppvdpd))month
else 'null'
end as end_time

举一反三,年月日,分别对应year, month, day,问题就都解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值