我有一个包含月份和日期混合值的列(其字符为$ 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;
答案 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;