Macros sas宏用于计算两个日期字符串之间的差异&;将数字存储在新变量中

Macros sas宏用于计算两个日期字符串之间的差异&;将数字存储在新变量中,macros,sas-macro,Macros,Sas Macro,参数开始日期,结束日期和输出变量。日期是固定的。如何在宏中转换它 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

参数
开始日期
结束日期
输出变量
。日期是固定的。如何在宏中转换它

    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\u DATE等。 其次,可以使用
%SYSFUNC()
宏函数调用宏代码中的
INTCK()
函数。 第三,您需要知道参数将使用的日期格式。如果您只要求他们使用
DATE
格式,那么您可以将参数值用作日期文本,这是最简单的

%let start_date=01JAN2015 ;
%let end_date=01JAN2016 ;
%let days = %sysfunc(intck(day,"&start_date"d,"&end_date"d));