oracle 得到上一个月,急急急,在oracle 存储过程,怎么得到 sysdate的之前的 1年和一个月的 时期值(50分)...

我说一个最笨的方法

v_sysdate varchar2(8); --变量用于现在时间

v_y varchar2(8);--现在的年份

v_m varcahe2(8);--现在有月份

e_y date;--sysdate-1的年份

e_m date;--sysdate-1的月份

begin

select to_char(sysdate,'yyyymm') into v_sysdate from dual ;--取出系统时间

v_y=substr(v_sysdate,1,4);--取现在的年份

v_m=substr(v_sysdate,5,2);--取现在的月分

v_y=to_char(to_number(v_y)-1);--年份减1

e_y=to_date(v_y||v_m,'yyyymm')--再转为时间格式.这是结果有年有月,你可以不要月即e_y=to_date(v_y,'yyyy')

select to_char(sysdate,'yyyymm') into v_sysdate from dual ;

v_y=substr(v_sysdate,1,4);

v_m=substr(v_sysdate,5,2);

if v_m='01' then --如果是1月就是

v_m='12' --12月了吧

v_y=to_char(to_number(v_y)-1) --当然年份要减1

else v_m=to_char(to_number(v_m)-1) --要不然就月份减1

if length(v_m)=1 --为了转化成时间,判月份是不是1位

then v_m='0'+v_m --如果是1位就在前加上0

end if

end if

e_m=to_date(v_y||v_m,'yyyymm') --转化为时间格式

end;

呵呵。我自己都觉得这种方法好笨哟。

oracle中好象有关于时间运算的函数。呵呵好久没用不记得了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值