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;
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;
下一篇: 测试,调用外部系统接口实现用Mock替换