标签: macro-variable

SAS 将 intnx 的“中间”参数设置为始终设置为第 15 个

我有以下 SAS 代码:

DATA _NULL_;
today = today();
    if day(today) ge 1 and day(today) le 15 then do;
        date2=put(intnx('month',today,-1,'m'), date11.);
        date1=put(intnx('month',today,-1,'E'), date11.);
    end;
    if day(today) > 15 then do;
        date2=put(intnx('month',today,0,'B'), date11.);
        date1=put(intnx('month',today,0,'m'), date11.); 
    end;
    call symput('dt',date1);
    call symput('dt2',date2);
RUN;
Run Code Online (Sandbox Code Playgroud)

上面的代码表示,如果今天的日期部分小于或等于 15,则将 date2 设置为上个月中旬,将 date1 设置为上个月的最后/月底。否则,将 date2 设置为当月月初,将 date1 设置为当月中旬。

我喜欢 SAS 使用“m”或“middle”来获取该月的中间日期。它非常适合有 30 天且中间日期为 15 日的月份。但对于有 31 天的月份,它总是在 16 日,二月是特例。我希望始终将中间放在 15 号。

我尝试在每一行添加“-1”以检查它是否能给我所需的内容,但当我调用该变量时它返回一个空白日期。对于不工作的日期调用,它返回一个点 -1。

其中之一是%put &rpt_dt. &rpt_dt2.; . 01-JAN-2023

由于 1 月有 31 天,如果我这样设置 -1:

date1=put(intnx('month',today,0,'m')-1, date11.); 
Run Code Online (Sandbox Code Playgroud)

我会得到想要的 1 …

date sas macro-variable

0
推荐指数
1
解决办法
203
查看次数

标签 统计

date ×1

macro-variable ×1

sas ×1