如何将 SAS 中的字符时间戳转换为有效的日期时间值

问题描述 投票:0回答:2

我在 SAS 中有两个不同的字符时间戳,需要将它们转换为日期时间 (24H) 值。
实现这一目标的首选方法是什么?

样品1

01-12-2023 09:51 AM
24-08-2023 02:38 PM

所需输出:

01-12-2023 09:51:00
24-08-2023 14:38:00

我对示例 1 的解决方案(不确定这是否是最好的)

PROC FORMAT;
    picture dmyhms
        . = ' ' 
        other = '%0d-%0m-%0Y %0H:%0M:%0S' (datatype=datetime);
RUN;

INPUT(CATX(" ", SUBSTR(event, 1, 10), SUBSTR(event, 12, 8)),anydtdtm.) FORMAT dmyhms. AS event_dt

样品2

20240112T000000.000 GMT
20230929T000000.000 GMT

所需输出:

12-01-2024
29-09-2023

我对示例 2 的解决方案(不确定这是否是最好的)

INPUT(SUBSTR(event, 1, 8), yymmdd8.) FORMAT=ddmmyyd10. as event_d

非常感谢任何帮助!

datetime sas timestamp character
2个回答
1
投票

关于样品1:

data have;
   c_ts = '01-12-2023 09:51 AM'; output;
   c_ts = '24-08-2023 02:38 PM'; output;
run;

data want;
   set have;
   n_ts = input(c_ts, anydtdtm.);
   format n_ts datetime20.;
run;

0
投票

对于示例2,@Tom提供了一个简单有效的方法:

data have;
   event = '20240112T000000.000 GMT'; output;
   event = '20230929T000000.000 GMT'; output;
run;

data want;
   set have;
   event_d = input(event, yymmdd8.);
   format event_d ddmmyyd10.;
run;
© www.soinside.com 2019 - 2024. All rights reserved.