转换为date5。 SAS格式

时间:2019-10-01 15:29:28

标签: sas

我有一个包含月份和日期混合值的列(其字符为$ 5格式)。   date 7/23 5/23 23MAR 7/19

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

date 23MAR 23MAY 23MAR 19JUL.

这是我正在使用的代码

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

1 个答案:

答案 0 :(得分:0)

SAS将DATE,TIME和DATETIME值存储为数字。您尝试使用的DATEPART()函数用于将DATETIME值转换为DATE值。但是您的源变量是长度为5的字符。(FORMAT只是有关如何显示值的说明)。

因此,您的第一个问题是将字符串转换为DATE值。然后,您可以输入DATE的前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;