ORACLE计算一年的12个月份及一些日期函数

来源:互联网 发布:设计店铺的软件 编辑:程序博客网 时间:2024/05/16 10:44

取一年中的12个月份

效率差的方法:

select to_char(add_months(to_date('201106','yyyymm'),-rownum+1),'yymm')

from tb_dmcs_daq where rownum<=6

union all

select to_char(add_months(to_date('201106','yyyymm'),rownum),'yymm')

from tb_dmcs_daq where rownum<=6

 

进一步优化

select substr('201106',0,4) || lpad(level,2,0) from dual

connect by level<13

推荐下面的格式:

select to_char(to_date('201106','yyyymm'),'yyyy') || lpad(level,2,0)

from dual

connect by level<13

另外一种方式去本年的12个月

select to_char(add_months(to_date((substr('201106',0,4)-1) || '12','yyyymm'),rownum),'yyyymm') dates from dual connect by rownum<13

计算下一年的12个月

select to_char(add_months(to_date('201012','yyyymm'),rownum),'yyyymm') dates from dual connect by rownum<13

计算本月有多少天:

select to_char(last_day(to_date('201206','yyyymm')),'dd') from dual

计算一年有多少天

select to_date('20030101','yyyymmdd')-to_date('20020101','yyyymmdd') from dual

计算这个月的月底是多少号

select last_day(sysdate) from dual

取下个星期的开始

select NEXT_DAY(sysdate,1) from dual

在该日期中添加半小时

select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss') now_date, to_char(sysdate+(30/24/60), 'yyyy-mm-dd hh:mi:ss') new_date

    from dual;

在该日期中减去半小时

select to_char(sysdate, 'yyyy-mm-dd hh:mi:ss') now_date,

              to_char(sysdate+(-30/24/60),'yyyy-mm-dd hh:mi:ss') new_date

     from dual;

在该日期中加一个月

select add_months(sysdate, 1) from dual;

在该日期中减一个月

select add_months(sysdate, -1) from dual;

求两个日期相差的月数

select months_between(sysdate,to_date('2012-01-01 01:00:00', 'yyyy-mm-dd hh:mi:ss')) result from dual;

为当前日期加上两年

select add_months(sysdate, 2*12) two_years_later from dual;

求两个日期相差几年

select months_between(sysdate,

          to_date('2011-06-30', 'yyyy-mm-dd')) / 12 years_between

      from dual;

求两个月后的最后一天

select last_day(add_months(sysdate,2)) last_day

      from dual;

求下一个月的第一天

select last_day(sysdate)+1 fisrt_day from dual;

取下周几是几号

select next_day(sysdate, '星期六')  from dual;

取下周三是几号

select next_day(sysdate,4) from dual;

将一年分2个阶段,并显示每个月的1号

select dates,

to_char(dates,'yyyy') group1,

decode(to_char(dates,'mm'),'04',1,'05',1,'06',1,'07',1,'08',1,'09',1, 2) group2

from (select add_months(to_date('200012','yyyymm'),rownum) dates from dual connect by rownum<25 )



转自 http://www.234wo.com/jtbc/articles/?type=detail&id=112

0 0
原创粉丝点击