如何使SAS不删除数字左侧的0

How to make SAS not remove the 0 to the left of a number

我是 SAS 编程的新手,我正在尝试创建自己的日期格式,即月份名称、年份(4 位数字)和日期(始终为两位数)、问题是从 1 到 9 它将它们视为 1 个单位数,并且它需要为 2(包括 0)。通过以下方式

我有这样的 February20221 我想要这样的 February202201

我做的是这样的:

%let m=%sysfunc(putn(%sysfunc(today()), monname.));
%let y=%sysfunc(putn(%sysfunc(today()), year));
%let d=%sysfunc(putn(%sysfunc(today()), day));

%let date= %sysfunc(cat(&m,&y,&d));

我该如何添加这个?我已经尝试过 cat 函数,put,input...一切,但它总是消除右边的 0。

非常感谢您

Proc Format 是创建自定义日期格式的正确工具。

Proc 格式的情况如下:

  • 图片语句创建图片格式。图片格式告诉 SAS 如何显示数字(SAS 日期是整数)。
  • dtfmt 是格式的名称,默认选项设置长度。
  • Other 关键字指定格式应应用于它遇到的所有值。
  • %B%Y%0d 是一系列 指令。指令指定应如何显示日期值。您可以看到完整的指令列表 here.

看看这是否适合你

proc format; 
  picture dtfmt (default=30)
    other = '%B%Y%0d' (datatype=date)
  ;
run;

%let date= %sysfunc(date(), dtfmt.);

%put &date.;

这会打印:

February202201

注意:根据您的Locale System Option,结果可能会有所不同。