欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle时间计算备忘

程序员文章站 2022-04-01 23:44:11
...
本文将持续更新,敬请期待
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;