今天工作遇到一个难题,就是数据库中存储的数据为
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,问题就都解决了。