2013-06-19 13 views
2

다음과 같은 방법으로 INTCK를 사용하려고하는데 오류가 발생합니다. 내가 뭘 잘못하고 있는지 모르겠다. 도와 주셔서 감사합니다. 감사.sas : INTCK 함수 오류를 알아낼 수 없습니다.

PROC FORMAT; 
PICTURE DTFMT LOW-HIGH='%0m/%0d/%Y' (DATATYPE=DATETIME); 
RUN; 

data want; 
dt_val1='17JUL2006:00:00:00.000'dt; 
dt_val2='17AUG2012:00:00:00.000'dt; 
format dt_val1 dt_val2 dt_val3 dtfmt.; 
dt_val3=intck('MONTH',dt_val1,dt_val2); 
put dt_val3; 
run; 

답변

4

dif를 이해하는 것이 중요합니다. SAS의 날짜와 datetime 값 사이의 차이. 이것은이 사이트 및 다른 사이트에서 자주 다루어졌습니다. 여기 official documentation과 발췌 부분이 있습니다.

SAS 날짜 값은 년 1 월 1 일부터 지정된 날짜까지의 일 수를 나타내는 값입니다.

SAS 시간 값은 당일 자정 이후의 시간 (초)을 나타내는 값 입니다. SAS 시간 값

SAS의 시간 값 년 1 월 1 일 ~ 1960 초를 나타내는 값 0 내지 86400이고, 두 번째 지정된 날짜 내에 시/분 /.

서로 바꾸어 사용할 수 없지만 둘 사이를 변환 할 수 있습니다. 이 응용 프로그램에서 날짜 변수를 사용해야합니다. 아마 그 일이 좀 더 쉬울 것입니다. 날짜 시간에 날짜를 변환

이 용이하고 날짜에 시간 값도 쉽게 :

'달'은 날짜 간격이 아닌 날짜 시간 간격 때문에 intck 기능은 아마 오류를 던지고 말했다
dateval = datepart(dtval); 

. 'DTMONTH'를 사용하면 효과가있을 것입니다. 자세한 내용은 link을 참조하십시오.

+0

"DTMONTH"가 작동했습니다. 감사. – Zenvega

1

당신은 날짜로 변환해야합니다, 그래서 당신은 할 수 있습니다 중 하나를 사용 :

data want; 
dt_val1='17JUL2006:00:00:00.000'dt; 
dt_val2='17AUG2012:00:00:00.000'dt; 
d1 =input(substr(put(dt_val1,datetime.),1,7),date7.); 
d2 =input(substr(put(dt_val2,datetime.),1,7),date7.); 
months=intck('month',d1,d2); 
run; 

또는

data want; 
dt_val1='17JUL2006:00:00:00.000'd; 
dt_val2='17AUG2012:00:00:00.000'd; 
months=intck('month',dt_val1,dt_val2); 
run; 

또는 probackpacker 제안으로 더 나은 날짜 부분 사용 :

data want; 
dt_val1='17JUL2006:00:00:00.000'dt; 
dt_val2='17AUG2012:00:00:00.000'dt; 
months=intck('month',datepart(dt_val1),datepart(dt_val2)); 
run; 
+0

'substr' 솔루션은 약간 조잡합니다. 왜'datepart'를 사용하지 않는가? –

+0

은 완전히 잊어 버렸습니다. 덕분에 – isJustMe

관련 문제