date - 从宏变量中减去日期

标签 date sas sas-macro

我在从宏变量中减去日期时遇到问题。

目前,我通过运行创建一个宏变量:

%LET date = %SYSFUNC(TODAY(),MMDDYY10.); 

我觉得我应该能够通过执行以下操作从 &date 中减去 1 天:

%LET newDate = %SYSFUNC(%INTNX('day',&date,-1),date9.);

但是,这会产生错误:

错误:%SYSFUNC 或 %QSYSFUNC 宏函数引用中缺少函数名称。

我需要 &newDate 的输出为 date9。

如有任何帮助,我们将不胜感激,谢谢!

最佳答案

快速回答:

%LET date = %SYSFUNC(TODAY()); 
%LET newDate = %SYSFUNC(INTNX(day,&date,-1),date9.);
%put &=newdate;

说明:

首先,最好删除 &date 中的格式,以确保将其正确解释为日期。您的原始代码(今天)在 intnx() 内解析为 12/06/2016,然后解析为 12 除以 6 除以 2016 - 等等。

其次,%sysfunc() 的内部函数应该是一个 datastep 函数 - 事实上,%sysfunc() 的全部目的是将这些函数带入 sas 。 %intnx() 不是宏函数,但如果是,那么根据定义,您不需要将其包装在 %sysfunc() 中。

最后,不应引用“day”参数 - sas 宏中的所有内容默认都被视为文本。

关于date - 从宏变量中减去日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40999876/

相关文章:

sas - 在宏 SAS 中使用 max 函数

sas - 仅对奇数执行宏

java - 如何将日期从英语转换为阿拉伯语

php - 如果日期是在今天或之前,我如何算出?

php - Jquery 插件 - 日期选择器和 CRUD(php mysql)

sas - 错误 : Required operator not found in expression (SAS)

sql - 使用 SAS 表删除 Oracle 数据库中的特定行

sas - 在 RSUBMIT block 中调用本地 SAS 宏?

PHP和MYSQL计算月总计并复制到另一个表