|
地板

楼主 |
发表于 2011-6-16 16:44:59
|
只看该作者
Re: 如何计算两个日期之间的business day?
每年的公共休假日期是不同的,不能统一写,所以你可以设立一个特殊日期文本去解决。
data format_wrk_dte;
length start $ 8;
label start="日期";
length end $ 8;
label end="日期";
length flag $ 1;
label flag="是否工作日";
do i='01jan2000'd to '31dec2500'd;
start=put(i,yymmddn8.);
end=put(i,yymmddn8.);
fmtname="$wrkdte";
eff_from='18000101';
eff_to='99991231';
w=weekday(i);
if w in (2,3,4,5,6) then do;
flag='1';
end;
else flag='0';
output;
end;
drop i w;
run;
/*导入特殊日期,里面包含日期和标识信息,打个比方:如果这个日期本来是星期一,但是不用上班,则标识信息为0,表示不用累加;
如果是周末,但是需要上班,则标识信息为1,表示要累加。不知我说的清楚不。*/
data para_spe;
length start $ 8;
label start="开始日期";
length end $ 8;
label end="结束日期";
length flag $ 1;
label flag="修改标志";
infile spe missover;
input start : $8. flag : $1. ;
end=start;
run;
proc sort data=para_spe;
by start;
run;
data format_wrk_dte;
merge format_wrk_dte(in=in1)
para_spe(in=in2);
length label 8;
label label="标记";
retain label 0;
by start;
if in1 then do;
label+flag;
output;
end;
run;
proc format cntlin=format_wrk_dte lib=su_mis;
run; |
|