首页 > 解决方案 > 转换为 date5。SAS 格式

问题描述

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

我希望数据以统一的 date5 形式出现。像这样的格式

date 23MAR 23MAY 23MAR 19JUL.

这是我正在使用的代码

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

标签: sas

解决方案


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

因此,您的第一个问题是将字符串转换为 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;

推荐阅读