zoukankan      html  css  js  c++  java
  • oracle日期操作

    1,获取某月最后一天
    SELECT TO_CHAR(LAST_DAY(TO_DATE('20140125', 'yyyymmdd')), 'yyyymmdd') LASTDAY
      FROM DUAL

    2,获取上月末最后一天:
    select to_char(add_months(last_day(to_date('2008-08-08','yyyy-MM-dd')),-1)
    ,'yyyy-MM-dd') LastDay from dual;
    3,获取下月
    select add_months(sysdate,1) from dual
    select last_day(sysdate)+1 from dual
    4,获取上月同一天
    SELECT trunc(trunc(sysdate,'mm')-1,'mm')+to_char(sysdate,'dd')-1 FROM dual; 
      
    select add_months(TO_DATE('20140302', 'yyyymmdd'),- 1 ) from dual


    5,获取去年同一天
      SELECT  TO_CHAR(ADD_MONTHS(TO_DATE('201404', 'yyyymm'), -12),
                             'yyyymm') FROM dual;

    获取上周日
    SELECT TO_CHAR(NEXT_DAY(TO_DATE('2014-02-10', 'yyyy-mm-dd'), '星期日') - 7, 'yyyymmdd')
      FROM DUAL;
    Oracle获取获取周数   oracle 获取周
    select TO_CHAR(to_date('20141117','yyyymmdd'), 'ww') from dual;//ww使用oracle的周期算法
    select TO_CHAR(to_date('20141117','yyyymmdd'), 'iw') from dual;//iw使用标准周期算法

    6,持续sql
     SELECT TO_DATE('2009-8', 'YYYY-MM') + ROWNUM - 1
      FROM DUAL
    CONNECT BY ROWNUM <
               (SELECT TRUNC(LAST_DAY(TO_DATE('2009-8', 'YYYY-MM'))) -
                       TRUNC(ADD_MONTHS(LAST_DAY(TO_DATE('2009-8', 'YYYY-MM')),
                                        -1))
                  FROM DUAL)



    7,年月日
    select to_char(sysdate, 'YYYY"年"MM"月"DD"日"') from dual;
    --
    select to_char(to_date('2014-02-16', 'yyyy-mm-dd')+(2-to_char(to_date('2014-02-16', 'yyyy-mm-dd'),'d'))-1,'yyyymmdd') from dual;



    ---- Oracle 取上周一到周末的sql

    -- 这样取的是 在一周内第几天,是以周日为开始的
    select to_char(to_date('20130906','yyyymmdd'),'d') from dual;
           --结果:6 注释:2013.09.06是周五,为本周的第六天

    select to_char(sysdate+(2-to_char(sysdate,'d'))-7,'yyyymmdd') from dual;---上周一 
    select to_char(sysdate+(2-to_char(sysdate,'d'))-1,'yyyymmdd') from dual;---上周日

    -- 一个更简单的写法 , 返回date类型
    select trunc(sysdate,'iw') - 7 from dual;---上周一 
    select trunc(sysdate,'iw') - 1 from dual;--上周日

    -- 这样查出来是本周一
    select trunc(sysdate,'iw') from dual; 

    select trunc(to_date('20130915','yyyymmdd'),'iw') from dual; 
           -- 结果:2013/9/9  注释:20130915 为周日

    -- 返回char类型
    select to_char(trunc(sysdate,'iw') - 7,'yyyymmdd') from dual;--上周一
    select to_char(trunc(sysdate,'iw') - 1,'yyyymmdd') from dual;--上周日

    -- 获取上周一的函数
    create or replace function fun_acc_getlastweekstart(systemdate in date)
      return varchar2 is
      result_str varchar2(15);
    begin
      select to_char(trunc(systemdate, 'iw') - 7, 'yyyymmdd')
        into result_str
        from dual;
      return result_str;
    end fun_acc_getlastweekstart;

    -- 获取上周日的函数
    create or replace function fun_acc_getlastweekend(systemdate in date) return varchar2 is
      result_str varchar2(15);
    begin
      select to_char(trunc(systemdate, 'iw') - 1, 'yyyymmdd')
        into result_str
        from dual;
      return result_str;
    end fun_acc_getlastweekend;

    -- 测试这个函数
    select fun_acc_getlastweekstart(sysdate) from dual; 
    select fun_acc_getlastweekend(sysdate) from dual; 
    select fun_acc_getlastweekstart(to_date('20130915','yyyymmdd')) from dual; 
    select fun_acc_getlastweekend(to_date('20130915','yyyymmdd')) from dual; 
           --查询结果:20130826、20130901、20130902、20130908 
    -- 注:
    select sysdate from dual;      
           --查询结果:2013/9/6 9:45:14 

    欢迎转载,但转载请注明原文链接[博客园: http://www.cnblogs.com/jingLongJun/]
    [CSDN博客:http://blog.csdn.net/mergades]。
    如相关博文涉及到版权问题,请联系本人。
  • 相关阅读:
    Median Value
    237. Delete Node in a Linked List
    206. Reverse Linked List
    160. Intersection of Two Linked Lists
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted Lists
    477. Total Hamming Distance
    421. Maximum XOR of Two Numbers in an Array
    397. Integer Replacement
    318. Maximum Product of Word Lengths
  • 原文地址:https://www.cnblogs.com/jingLongJun/p/4491047.html
Copyright © 2011-2022 走看看