Oracle时间计算备忘

本文将持续更新,敬请期待
1.计算某月的某一天
select to_char(add_months(last_day(sysdate),-i)-j,'yyyy-MM-dd') from dual
其中i为上第几个月,j为倒数第几天。
例子:
比如2012年9月10号,那么select to_char(add_months(last_day(sysdate),-8)-1,'yyyy-MM-dd') from dual
结果为:2012-01-30
2.计算某日期对应的周一和周日
select to_char(trunc(to_date('你的日期','yyyy-mmdd'),'IW'),'yyyyMMdd')from dual;
IW:ISO标准周
WW:oracle标准周

如:2011年4月4日这天所在的周一
select to_char(trunc(to_date('20110404','yyyy-mm-dd'),'IW'),'yyyyMMdd') from dual;
结果:20110404
2011年4月4日这天所在的周日,加6即可
select to_char(trunc(to_date('20110404','yyyy-mm-dd'),'IW')+6,'yyyyMMdd') from dual;
结果:20110410
3.获取一个月所有的天数
如2012年1月的所有天数:
declare
v_temp number;
v2 varchar2(32);
begin
  v_temp:=0;
  v2:='201201';
  for v_temp in 0 .. 30
  loop
     v2:=to_char(add_months(last_day(sysdate),-9)-v_temp,'yyyyMMdd');
     dbms_output.put_line(v2);
  end loop;
end;

猜你喜欢

转载自nannan408.iteye.com/blog/1675300