0

我有一个名为 Last Payment 的专栏

last payment
12DEC09:00:00:00

所有的观察都遵循这个结构,我尝试了一个子字符串,这样

data want;
set have;
last_payment=substr(last_payment,1,7);
run;

这不起作用,我尝试使用 date7 格式化日期。和 date.9 但都只返回 ********,有人可以帮我将其格式化为 ddmmmyy ty。

4

2 回答 2

2

在 date7 中格式化之前,您必须使用 datapart 函数。或日期9。例子:

data new;
format date_new date9. ;
date_new = datepart("12DEC09:00:00:00"dt);
run;
于 2018-03-14T12:05:49.930 回答
0

被审查的文本意味着使用了错误的格式。

  • 如果 last_payment 是一个字符串,则将“datetime_as_string”替换为 last_payment。
  • 如果 last_payment 是日期时间,则将“datetime_as_dt”替换为 last_payment。

下面的代码将处理您将日期时间读取为字符串和数值的两种情况。

代码:

data new;
format  datetime_as_dt datetime21. dt_to_date date7. datetime1 date7.;
datetime_as_dt="12DEC09:00:00:00"dt;
datetime_as_string ="12DEC09:00:00:00";
/*Converting datetime to date*/
dt_to_date= datepart(datetime_as_dt);
/*converting datetime string to date*/
/*Option1: Convert string to datetime then extract date*/
datetime1 = datepart(input(datetime_as_string,datetime21.));
/*Option2: Extract date from string then convert to date*/
datetime2 = scan(datetime_as_string,1,':');
put _all_;
run;

日志:

datetime_as_dt=12DEC2009:00:00:00 
datetime_as_string=12DEC09:00:00:00
dt_to_date=12DEC09 
datetime1=12DEC09  
datetime2=12DEC09

创建的表:

输出

于 2018-03-14T12:24:53.903 回答