您的位置:首页 > 数据库 > Oracle

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

2014-07-07 17:04 246 查看
取一年中的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: