sas宏计算两个日期字符串之间的差异并将数字存储在新变量中
sas macro to count difference between two date strings & store the number in new variable
参数 start_date
、end_date
和 output_vars
。日期是 包机字符串 。如何在宏中转换它?
data _null_;
start =;
end = ;
diff=end date-startdate;
days = intck('day',start,end);
weeks = intck('week',start,end);
months = intck('month',start,end);
year = intck('year',start,end);
put days= weeks= months= year=;
run;
首先,如果您有宏参数,那么它们将是宏变量而不是数据步骤变量。所以你需要将参数值引用为&START_DATE,等等。
其次,您可以使用 %SYSFUNC()
宏函数调用宏代码中的 INTCK()
函数。
第三,您需要知道参数将使用的日期格式。如果您只要求他们使用 DATE
格式,那么最简单,然后您可以将参数值用作日期文字。
%let start_date=01JAN2015 ;
%let end_date=01JAN2016 ;
%let days = %sysfunc(intck(day,"&start_date"d,"&end_date"d));
参数 start_date
、end_date
和 output_vars
。日期是 包机字符串 。如何在宏中转换它?
data _null_;
start =;
end = ;
diff=end date-startdate;
days = intck('day',start,end);
weeks = intck('week',start,end);
months = intck('month',start,end);
year = intck('year',start,end);
put days= weeks= months= year=;
run;
首先,如果您有宏参数,那么它们将是宏变量而不是数据步骤变量。所以你需要将参数值引用为&START_DATE,等等。
其次,您可以使用 %SYSFUNC()
宏函数调用宏代码中的 INTCK()
函数。
第三,您需要知道参数将使用的日期格式。如果您只要求他们使用 DATE
格式,那么最简单,然后您可以将参数值用作日期文字。
%let start_date=01JAN2015 ;
%let end_date=01JAN2016 ;
%let days = %sysfunc(intck(day,"&start_date"d,"&end_date"d));