%n
지시문을 PICTURE 형식으로 사용할 수 있어야합니다.
proc format;
picture pictdhmf
low-high='%0n:%0H:%0M'(datatype=time)
;
run;
참고 TIME 데이터 유형을 사용해야합니다. 경고 : DBCS 지원을 사용하여 SAS를 실행할 때 (예 : Shift-JIS 인코딩 사용) 올바른 결과를 얻지 못합니다. 또는 0보다 적은 시간입니다. UTF-8 인코딩을 사용하는 경우에도 1 바이트 문자 세트를 사용할 때 음이 아닌 값에 대해 작동합니다.
대신에 함수를 작성할 수 있습니다.
proc fcmp outlib=work.func.func;
function dhmf(c) $;
length f $ 10;
f=catx(':',datepart(abs(c)),put(timepart(abs(c)),tod5.));
if c < 0 then f='-'||f ;
return (f);
endsub;
run;
options cmplib=work.func;
다음 함수를 호출하는 형식을 지정하십시오.
proc format;
value dhmf(default=10)
other=[dhmf()];
run;
따라서 두 가지 방법을 모두 테스트하고 TIME 형식이 생성하는 값과 비교하면됩니다.
data _null_;
input (date1 date2) (:datetime24.) ;
diff = date2 - date1 ;
if _n_=1 then put 'RAW' @11 'TIME.' @20 'Function' @ 30 'Picture';
put diff comma9. @11 diff time. @20 diff dhmf. @30 diff pictdhmf.-l ;
cards ;
01JAN2000:02:30 02JAN2000:03:45
01JAN1960:08:00 01JAN1960:17:00
01FEB2017:00:00 04FEB2017:06:23
01FEB2015:00:00 04FEB2017:06:23
04FEB2017:00:00 01FEB2017:06:23
run;
우리는 얻을 : 날짜 시간 값 사이의
RAW TIME. Function Picture
90,900 25:15:00 1:01:15 1:01:15
32,400 9:00:00 0:09:00 0:09:00
282,180 78:23:00 3:06:23 3:06:23
63440580 17622:23 734:06:23 734:06:23
-236,220 -65:37 -2:17:37 -2:06:23
출처
2017-03-29 15:12:05
Tom
의 차이는 초 차이를 나타냅니다. 사용자 정의 TIME 형식을 요구하는 것 같습니다. – Tom
네, 맞을 것 같습니다. 시간과 분뿐만 아니라 일을 제공하는 SAS 문서에서 시간 형식을 찾을 수 없었습니다. 이 형식이 있습니까? – Bosley