oracle月份相减函数,ORACLE计算一年的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 )

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值