如何将SAS日期值(如2018年11月20日)转换为2018年11月20日

如何将SAS日期值(如2018年11月20日)转换为2018年11月20日,sas,Sas,我在SAS中有一个日期值,如2018年11月20日的日期格式。我需要一个SAS函数,它可以用空格分隔DayMonthtYear,例如2018年11月20日。 哪个SAS函数可以解决我的问题?我想不出一个函数可以满足您的要求,因此下面介绍了两种替代方法: /* set up the SAS date required */ data have; format num_date date9.; input num_date date9.; datalines; 20NOV2018

我在SAS中有一个日期值,如2018年11月20日的日期格式。我需要一个SAS函数,它可以用空格分隔DayMonthtYear,例如2018年11月20日。
哪个SAS函数可以解决我的问题?

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

/* 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;

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

/* 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;

定义日期变量时,可以使用format更改日期变量的格式。 您要求的格式与mmddyyw一致。格式。 我建议您尝试使用mmddyyw。其中w代表2到10。 正在尝试mmddyy10。解决您的问题并获得2019年2月1日的输出


Chee's:)

定义日期变量时,可以使用format更改日期变量的格式。 您要求的格式与mmddyyw一致。格式。 我建议您尝试使用mmddyyw。其中w代表2到10。 正在尝试mmddyy10。解决您的问题并获得2019年2月1日的输出


Chee's:)

如果您想格式化,即只是为了显示,您不应该更改数据类型,或者如果您想更改数据类型(那么它不再是一个日期,而是一个字符值),您可以按照@amir answer,它是完美的。否则,图片格式有助于设置日期格式

 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

如果您想要格式化,即只是为了显示,您不应该更改数据类型,或者如果您想要更改数据类型(那么它不再是一个日期,而是一个字符值),您可以按照@amir answer,它是完美的。否则,图片格式有助于设置日期格式

 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

您需要说明新格式是否仅用于显示目的,或者是否需要将其存储为字符值。SAS日期存储为数字,您可以选择多种不同的格式来显示它们。如果您只想更改显示,然后更改格式,您可以在线查找所有选项。这还取决于您使用此选项的目的。在某些情况下,图片格式可以工作,而在其他情况下,用户定义的格式(不是图片)可以工作。我认为这通常在绘图时起作用。您需要说明新格式是否仅用于显示目的,或者是否需要将其存储为字符值。SAS日期存储为数字,您可以选择多种不同的格式来显示它们。如果您只想更改显示,然后更改格式,您可以在线查找所有选项。这还取决于您使用此选项的目的。在某些情况下,图片格式可以工作,而在其他情况下,用户定义的格式(不是图片)可以工作。我认为这通常在作图时起作用。