如何根据日期使用不同的日期值集

时间:2015-06-24 14:36:54

标签: sas sas-macro

我希望为我的公司自动化每日报告,但我遇到了一些麻烦。报告仅在每个月的第2个工作日更新。我在SAS网站上找到了一些代码,它可以解决任何一个月的第二个工作日。

data scdwrk;
  /* advance date to the first day of the month using the INTNX function */
  second=intnx('month',today(),0);
  /* determine the day of the week using the WEEKDAY function */
  day=weekday(second);
  /* if day=Monday then advance by 1 */
  if day=2 then second+1;
  /* if day=Sunday then advance by 2 */
  else if day=1 then second+2;
  format second date9.;
run ; 

我还设置了一个标志,将今天的日期与此代码生成的日期进行比较。 我现在需要找到一种方法,如果代码在该月的第一个工作日运行,那么它运行一组特定的宏日期变量

%let start_date="&prevmnth;
%let end_date= &endprevmnth;
%let month= &prevyearmnth; 

然后当它在该月的第二个工作日运行时,它使用另一组宏日期变量(日历月)

%let start_date="&currmnth;
%let end_date= &endcurrmnth;
%let month= &curryearmnth;

对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我最近有一些代码可以解决这个问题。以下是我如何处理它。

首先,创建一个假期表。这可以每年维持。

其次,创建一个表,其中包含该月的前5天,而不是周末。

第三,删除假期。

最后,获取数据集中的第二个值。

{{1}}