oracle 上年末函数,oracle获取上一旬的开始时间和结束时间的实现函数

-- 获取上旬开始时间

create or replace function fd_lastxunstart(rq in date) return string is

refstr varchar2(50);

v_rq date;

begin

--获取上一旬的日期

v_rq := trunc(rq);

select case decode(trunc((to_char(v_rq, 'dd') - 1) / 10),

0,

'上旬',

1,

'中旬',

'下旬')

when '上旬' then --返回上个月的下旬

to_char(add_months(v_rq, -1), 'yyyymm') || '21'

when '中旬' then

to_char(v_rq, 'yyyymm') || '01' else

to_char(v_rq, 'yyyymm') || '11'

end

into refstr

from dual;

return refstr;

end fd_lastxunstart;

-- 这个返回的是:上旬的开始日期

select sysdate from dual;

select fd_lastxunstart(sysdate) from dual;

select fd_lastxunstart(to_date('20130305','yyyymmdd')) from dual;

select fd_lastxunstart(to_date('20130311','yyyymmdd')) from dual;

select fd_lastxunstart(to_date('20130325','yyyymmdd')) from dual;

-- 执行结果为: 2013/9/5 12:08:39、20130821、20130221、20130301、20130311

---- 获取上一旬的结束日期

-- 传递进去 一个 date 类型的值,返回一个varchar类型的上旬结束日期

create or replace function fd_lastxunend(rq in date) return string is

refstr varchar2(50);

v_rq date;

begin

--获取上一旬的日期

v_rq := trunc(rq);

select case decode(trunc((to_char(v_rq, 'dd') - 1) / 10),

0,

'上旬',

1,

'中旬',

'下旬')

when '上旬' then --返回上个月的最后1天

--chr(39) 这个是加引号

to_char(last_day(add_months(v_rq, -1)) + 1 - 1 / 24 / 60 / 60,

'yyyymmdd')

when '中旬' then

to_char(v_rq, 'yyyymm') || '10' else

to_char(v_rq, 'yyyymm') || '20'

end

into refstr

from dual;

return refstr;

end fd_lastxunend;

-- 这个获取的是:上旬的结束日期

select fd_lastxunend(sysdate) from dual;

select fd_lastxunend(to_date('20130305','yyyymmdd')) from dual;

select fd_lastxunend(to_date('20130311','yyyymmdd')) from dual;

select fd_lastxunend(to_date('20130315','yyyymmdd')) from dual;

select fd_lastxunend(to_date('20130221','yyyymmdd')) from dual;

--执行结果:20130831、20130228、20130310、20130310、20130220

-- 观察 1 / 24 / 60 / 60 的作用 这个是一秒

select last_day(add_months(trunc(sysdate), -1)) + 1 - 1 / 24 / 60 / 60

from dual;

select last_day(add_months(trunc(sysdate), -1)) from dual;

select last_day(add_months(trunc(sysdate), -1)) + 1 from dual;

-- 执行结果:2013/8/31 23:59:59、2013/8/31、2013/9/1

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值