日期变量格式在Catx中消失

时间:2016-08-22 13:14:18

标签: sas

我正在尝试创建一个SAS表来保存输出表的描述和名称,其中包含格式化的日期。但是输出包括未格式化的日期。

我的代码:

data tablenames;
infile datalines delimiter=',';
input description: $30. sastablename: $30.;
attrib datetoday format=yymmdd6.;
datetoday = date();
mergedtext=catx('_',sastablename,datetoday);
output;
datalines;
Table for Customers,TfC
Table for Sales,TfS
;

代码输出为 mergedtext 变量提供 TfC_20688 。 我想要的 mergedtext 变量的输出是 TfC_160822

2 个答案:

答案 0 :(得分:2)

您需要让CATX()知道使用格式化的值。如果您的变量已经格式化,请尝试使用VVALUE()函数。否则,使用PUT()函数应用所需的格式。

data tablenames;
  infile datalines delimiter=',';
  input description: $30. sastablename: $30.;
  attrib datetoday format=yymmddn8.;
  datetoday = date();
  mergedtext1=catx('_',sastablename,vvalue(datetoday));
  mergedtext2=catx('_',sastablename,put(datetoday,yymmddn8.));
datalines;
Table for Customers,TfC
Table for Sales,TfS
;

P.S。不要用两位数。

答案 1 :(得分:0)

您可以使用PUT()函数将datetoday中的SAS日期(其值为20688)转换为您想要的yymmdd格式。

43   data tablenames;
44   infile datalines delimiter=',';
45   input description: $30. sastablename: $30.;
46   mergedtext=catx('_',sastablename,put(date(),yymmddn6.));
47   put mergedtext=;
48   output;
49   datalines;

mergedtext=TfC_160822
mergedtext=TfS_160822
NOTE: The data set WORK.TABLENAMES has 2 observations and 3 variables.