转换为日期5。SAS中的格式

转换为日期5。SAS中的格式,sas,Sas,我有一个列,它混合了月份和日期(字符格式为$5)。 日期 7/23 5/23 3月23日 7/19 我希望数据是统一的日期。像这样的格式 日期 3月23日 5月23日 3月23日 7月19日。 这是我正在使用的代码 data DAte_check4again; set Date_2test; format check_dt date5.; check_dt=datepart(date); run; SAS将日期、时间和日期时间值存储为数字。您尝试使用的DATEPART()函数用于

我有一个列,它混合了月份和日期(字符格式为$5)。
日期
7/23
5/23
3月23日
7/19

我希望数据是统一的日期。像这样的格式

日期
3月23日
5月23日
3月23日
7月19日。

这是我正在使用的代码

data DAte_check4again;
 set Date_2test;
  format check_dt date5.;
  check_dt=datepart(date);
  run;

SAS将日期、时间和日期时间值存储为数字。您尝试使用的DATEPART()函数用于将DATETIME值转换为日期值。但是源变量是长度为5的字符。(格式只是如何显示值的说明)

因此,第一个问题是将字符串转换为日期值。然后,您可以获取日期的前5个字符。格式化并存储到原始变量或其他变量中。假设月/日值是针对当前年份的,并且您只有这两种样式的字符串,这里有一种方法可以生成日期和5个字符的字符串

data want;
  set have ;
  if index(date,'/') then date_ck = input(cats(date,'/',year(today())),mmmddyy10.);
  else date_ck = input(cats(date,year(today())),date9.);
  format date_ck date9.;
  new_date = substr(put(date_ck,date9.),1,5);
run;

这与宏代码有什么关系?