如何解决指定图片线人以读取特定日期字符串
我想将 "19-APR-21 18.17.06.301100"
字符串读入 DATETIME
并相应地显示。为了实现这一点,我打算定义一个显示格式和一个 informat
,如下例所示。
示例
* Define formats to read and display data;
* Input format;
PROC FORMAT LIB=work;
PICTURE indte other = '%d-%B-%y %H.%M.%S.%s'
(DATATYPE=DATETIME);
RUN;
* Nice display format;
PROC FORMAT LIB=work;
PICTURE outdte other = '%d %B %y %H:%M'
(DATATYPE=DATETIME);
RUN;
* Test with sample data;
DATA text;
strdate = "19-APR-21 18.17.06.301100";
RUN;
* Apply informat and display format;
DATA pretty(RENAME=(strdate=nicedte));
SET work.text;
ATTRIB strdate INFORMAT=indte.;
FORMAT strdate outdte.;
RUN;
问题/疑问
-
DATA
pretty
过程无法加载定义格式并返回以下错误:注意 485-185:未找到或无法加载信息
$INDTE
。注意 484-185:找不到或无法加载格式
$OUTDTE
。 - 对于在正确流程中通过以下方式获取的数据,这是一种有效的方法吗?
解决方法
PICTURE 用于创建 FORMAT,而不是 INFORMAT。
ANYDTDTM 信息应该处理这种风格的字符串。但它会忽略几分之一秒。
DATA text;
strdate = "19-APR-21 18.17.06.301100";
datetime = input(strdate,anydtdtm.);
format datetime datetime26.6 ;
put (_all_) (=/);
RUN;
结果:
strdate=19-APR-21 18.17.06.301100
datetime=19APR2021:18:17:06.000000
如果您需要几分之一秒,则解析字符串并单独读取。
datetime = dhms(input(strdate,date9.),input(scan(strdate,2,' .'),2.),3,4,2.)
+input(scan(strdate,5,6.6)
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。