SAS中call symput函数语句功能解析及疑问咨询
SAS语句疑问解答
以下是你提到的SAS代码:
call symput('setdate',put("&sysdate"d -(0) - weekday(date()),date9.))
疑问1:语句中的-(0)起到什么作用?
-(0)是完全冗余的无意义操作。SAS中日期以数值形式存储(代表从1960年1月1日起的天数),数值减0不会改变原日期值,这部分代码可能是编写时的复制粘贴残留,或是测试后未清理的无用代码,对最终计算结果没有任何影响。
疑问2:当日为周二(weekday=2),为何结果是2023年2月25日而非2023年2月26日?
你对SAS weekday()函数的返回值定义有误,SAS默认的weekday()函数规则是:
- 周日=1,周一=2,周二=3,周三=4,周四=5,周五=6,周六=7
2023年2月28日是周二,weekday(date())实际返回3,用当日日期(28)减去3,得到25,对应2023年2月25日,这和实际执行结果完全吻合。你之前误以为周二对应返回值2,才会得出错误的预期结果。
内容的提问来源于stack exchange,提问作者AJT1973
相关产品推荐
相关产品推荐

