如何将SAS日期值转换为20NOV2018到20 NOV 2018

时间:2019-01-02 10:27:42

标签: sas

我在SAS中有一个日期值,例如20NOV2018,它是日期格式。我需要一个可以将DayMonthtYear与20 NOV 2018等空格分开的SAS函数。 哪个SAS功能可以解决我的目的?

3 个答案:

答案 0 :(得分:3)

如果要格式化(即仅用于显示),则不应该更改数据类型,或者如果要更改数据类型(那么它不再是日期而是字符值),则可以按照@amir答案进行操作,即长官。否则,图片格式可以帮助您格式化日期。

 proc format;
picture mydate (default = 11)
low-high = '%0d %b %Y'(datatype=date);
run; 

data have;
input num_date:date9.;
format num_date mydate.;
datalines;
20NOV2018
09SEP2018
;

输出是

Obs num_date
1   20 Nov 2018
2   09 Sep 2018

答案 1 :(得分:0)

我想不出一个可以满足您要求的函数,因此下面提供了两种替代方法:

/* set up the SAS date required */
data have;
   format num_date date9.;
   input num_date date9.;
   datalines;
20NOV2018
;

/* create char_date1 and char_date2 with spaces in the date values */
data want;
   set have;
   char_date1 = catx(' '
                    ,day(num_date)
                    ,put(num_date,monname3.)
                    ,year(num_date)
                    );

   char_date2 = put(num_date,worddatx.);
run;

答案 2 :(得分:0)

在定义日期变量时,可以使用format更改日期变量的格式。 您要求的格式与mmddyyw一起使用。格式。 我建议您应该尝试使用mmddyyw。 w代表2到10。 尝试mmddyy10。解决您的问题并获得类似01/02/2019的输出。

欢呼的:)