我在 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
非常感谢任何帮助!
关于样品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;
对于示例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;