sas - 如何为 %str 参数自动设置报告日期
问题描述
我正在使用已经构建的程序编译订单数据,但我正在尝试更新代码的一部分以将今天的日期减去 61 天,并在各自的开始和结束日期加上 56 天,而不是手动输入日期如下图。当前的功能代码以及我的尝试之一如下。
当前工作和执行的格式是:
/* Set report dates (dd-mm-yyyy) */
%let fore_start = %str(08-SEP-2019);
%let fore_end = %str(03-JAN-2020);
我正在尝试构建类似的东西:
/* Set report dates (dd-mm-yyyy) */
%let fore_start = %str(TODAY()-61);
%let fore_end = %str(TODAY()+56);
我正在寻求帮助设计一条语法合理的线路来解决这个问题。任何帮助,将不胜感激!
解决方案
尝试这个:
%let fore_start = %sysfunc(putn(%eval(%sysfunc( today() ) - 61), ddmmyyd10.) );
%let fore_end = %sysfunc(putn(%eval(%sysfunc( today() ) + 56), ddmmyyd10.) );
看起来那里有很多,但实际上并非如此。删除宏语言的所有语法并将其转换为数据步进函数,这就是您所做的一切:
fore_start = put(today() - 61, ddmmyyd10.);
fore_end = put(today() + 56, ddmmyyd10.);
有几件事在起作用:
在宏语言中,SAS 函数如
putn
和today()
都需要用%sysfunc()
.%sysfunc()
是您与 SAS 系统功能和宏工具的连接。%eval
将两个整数相减。putn
,另一个 SAS 函数,会将生成的 SAS 日期转换为您想要的格式ddmmyyd10.
。putn
宏语言而不是put
.
推荐阅读
- javascript - 未捕获的 SyntaxError:输入 js 的意外结束
- sed - 如何替换以文件中某些内容开头的行的第二次出现
- typescript - 如何使用 storybook 和 lerna 在 NPM 上创建和发布多个 Vuejs 组件?
- angular - 模板驱动的表单不起作用..“错误:未找到名称 'ngForm' 的导出”
- kivy - 无法从 Kivy 中的 io.BytesIO 加载图像
- css - 如何在css中使用flex进行溢出自动
- postgresql - 字段的长度对于正则表达式查找是否重要?索引是否有助于加快正则表达式查询?
- ruby-on-rails - 无法在 bitbucket 上使用 ssh 进行连接
- awk - 编写好的 awk begin 标头的问题
- android - lsetfilecon 失败:传输端点不支持操作