我在数据集中有一些日期时间作为丑陋的字符串。
示例:" 2017年1月14日星期六00:00:00"
我想将此转换为日期,例如2017JAN14
任何更简单的解决方案然后沿着正则表达式路线走?
答案 0 :(得分:2)
如果你想要yyyymmmdd
,那么你需要创建自己的格式才能做到这一点,但你对内置的内容感到满意,那么下面应该做。只需跳过一周中的某一天,然后使用信息转换其余部分:
data _null_;
mytxtdate = "Saturday 14 Jan 2017 00:00:00";
mydate = input(compress(substr(mytxtdate,index(mytxtdate,' '))),date9.);
format mydate yymmdd10.;
put _all_;
run;
这当然很尴尬。我有兴趣知道是否有一种方法可以使用少于4个数据步长函数作为单行。这里的逻辑是:
index
跳至第一个空格。substr
和compress
date9.
信息作为SAS日期输入,该信息仅查看结果字符串的前9个字符,忽略其余字符。