• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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
    您可能感兴趣的文章:
    • oracle中得到一条SQL语句的执行时间的两种方式
    • oracle 日期时间函数使用总结
    • oracle日期时间型timestamp的深入理解
    • Oracle时间日期操作方法小结
    • oracle 时间格式的调整
    • Oracle关于时间/日期的操作
    • 修改计算机名或IP后Oracle10g服务无法启动的解决方法
    • 计算机名称修改后Oracle不能正常启动问题分析及解决
    • Oracle通过时间(分钟)计算有几天几小时几分钟的方法
    上一篇:Oracle 获取上周一到周末日期的查询sql语句
    下一篇:oracle12c安装报错:PRVF-0002的解决方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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