首页 Oracle oracle获取上一旬的开始时间和结束时间的实现函数

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

本文为大家介绍下oracle如何获取上一旬的开始时间和结束时间,实现函数如下,感兴趣的朋友可以参考下

<div class=”codetitle”><a style=”CURSOR: pointer” data=”9025″ class=”copybut” id=”copybut9025″ onclick=”doCopy(‘code9025’)”> 代码如下:<div class=”codebody” id=”code9025″>
— 获取上旬开始时间
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,
‘下旬’)
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

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/shujuku/oracle/20200925/10327.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部