我有以下代码。虽然我已进入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;
答案 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;