发出输入sas日期作为datalines

时间:2014-07-07 08:34:58

标签: sas

我有以下代码。虽然我已进入30jun1983,但它被保存为30 / jun / 2020。并且只有在卡片中的日期值之间有两个空格时才会读取,如果只有一个空格,则它会将第二个值读取为缺失。

DATA DIFFERENCE;
infile cards dlm=',' dsd;
INPUT  DATE1 DATE9. Dt2 DATE9.;
FORMAT DATE1 DDMMYY10. Dt2 DDMMYY10.;
DIFFERENCE=YRDIF(DATE1,Dt2,'ACT/ACT');
DIFFERENCE=ROUND(DIFFERENCE);
CARDS;
11MAY2009  30jun1983
;
RUN;

1 个答案:

答案 0 :(得分:8)

您需要在输入语句中使用冒号(表示INformats),并在数据表中使用逗号(您将逗号指定为DLM - 分隔符):

DATA DIFFERENCE;
infile cards dlm=',' dsd;
INPUT  DATE1 :DATE9. Dt2 :DATE9.;
FORMAT DATE1 DDMMYY10. Dt2 DDMMYY10.;
DIFFERENCE=YRDIF(DATE1,Dt2,'ACT/ACT');
DIFFERENCE=ROUND(DIFFERENCE);
CARDS;
11MAY2009,30jun1983
;
RUN;