指定图片线人以读取特定的日期时间字符串
Specifying picture informant in order to read specific datetme string
我想将 "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;
Problems/questions
DATA
pretty
程序无法加载定义格式,returns 出现以下错误:
NOTE 485-185: Informat $INDTE
was not found or could not be loaded.
NOTE 484-185: Format $OUTDTE
was not found or could not be loaded.
- 对于在正确过程中通过以下来源获取的数据,这是一种有效的方法吗:
infile <file ref created by filename> delimiter=',' stopover firstobs=2 dsd lrecl=32767;
?
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.)
,input(scan(strdate,3,' .'),2.)
,input(scan(strdate,4,' .'),2.)
+input(scan(strdate,5,' .'),6.6)
);
我想将 "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;
Problems/questions
DATA
pretty
程序无法加载定义格式,returns 出现以下错误:NOTE 485-185: Informat
$INDTE
was not found or could not be loaded.NOTE 484-185: Format
$OUTDTE
was not found or could not be loaded.- 对于在正确过程中通过以下来源获取的数据,这是一种有效的方法吗:
infile <file ref created by filename> delimiter=',' stopover firstobs=2 dsd lrecl=32767;
?
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.)
,input(scan(strdate,3,' .'),2.)
,input(scan(strdate,4,' .'),2.)
+input(scan(strdate,5,' .'),6.6)
);