간단한 예시를 통해 INTNX 및 INTCK 기능 및 작동법을 수월하게 이해하실 수 있습니다. 해당 본문은 그 중 몇 가지의 사용 예시를 보여줍니다. 해당 기사는 Victor Popovich가 작성한 sasCommunity.org에 게재되었습니다.
@derekmor54 (Mr. Dates and Times)의 SAS Intervals 관련 튜토리얼 비디오를 시청하실 수 있습니다.
INTCK 및 INTNX 함수에 대한 자세한 내용은 INTCK 및 INTNX : @Rick_SAS의 SAS에서 날짜 간 간격을 계산하기 위한 두 가지 필수 함수에 관한 기사를 참조하시기 바랍니다.
INTNX 와 INTCK의 차이점
두 날짜 또는 데이트타임 값 사이의 시간 단위 수를 계산합니다. 시간 단위의 경우 년, 월, 주, 일 등을 선택할 수 있습니다. |
|
지정된 날짜 또는 데이트타임 값에서 떨어진 지정된 시간 단위 수인 SAS 날짜 또는 데이트타임를 계산합니다. |
쉽게 기억하는 팁:
INTNX 함수 예시
SAS 문서에 따르면 본 함수는 주어진 간격 또는 간격으로 날짜, 시간 또는 날짜, 데이터타임 값을 바꿀수 있도록 하며, 날짜, 시간 또는 날짜, 데이트타임 값을 반환합니다.
Example 1. INTNX 함수 사용의 몇 가지 간단한 예:
format day week month_ year date9.;
day=intnx('day', '01FEB2010'd, 7); /* +7 days */ week=intnx('week', '01FEB2010'd, 1); /* 01 of Feb 2010 is Monday*/ month_=intnx('month', '01FEB2010'd, 2); /* +2 month */ year=intnx('year', '01FEB2010'd, 1); /* +1 year */
|
결과값은 다음과 같습니다.
Example 2. 인터벌 간 곱셈 및 이동
하단의 예시와 같이 숫자를 추가하여 첫 번째 인수 즉 인터벌을 변경할 수 있습니다.
format day week year date9.;
day=intnx('day2', '01FEB2010'd, 2); /* two of 2-days intervals */ week=intnx('week1.3', '01FEB2010'd, 1); /* 01 of Feb 2010 is Sunday. 3rd day of the week is Tuesday */ year=intnx('year1.3', '01FEB2010'd, 1); /* next year | third month | 1st day*/ |
결과값은 다음과 같습니다.
이와 같이 인터벌을 자유롭게 곱하거나 이동하여 결합할 수 있습니다. 복잡한 인터벌을 구현하고자 할 경우에는 주의가 필요합니다.
Example 3. 데이트타임 및 시간 형식
The INTNX 함수는 데이트타임, 시간, 날짜 형식을 처리합니다. 상단의 예시는 날짜 형식을 기반으로 합니다. 하단의 예시는 데이트타임 및 시간 형식을 다룹니다.
format seconds minutes hours days weeks datetime20.; format t_seconds t_minutes t_hours time9.;
seconds=intnx('second', '01FEB2010:00:00:00'dt, 1); minutes=intnx('minute', '01FEB2010:00:00:00'dt, 1); hours=intnx('hour', '01FEB2010:00:00:00'dt, 1); days=intnx('dtDay', '01FEB2010:00:00:00'dt, 1); weeks=intnx('dtWeek', '01FEB2010:00:00:00'dt, 1);
t_seconds=intnx('second', '00:00:00't, 1); t_minutes=intnx('minute', '00:00:00't, 1); t_hours=intnx('hour', '00:00:00't, 1); |
결과값은 다음과 같습니다.
Example 4. 인터벌 내 정렬
format beginning middle end sameday date9.;
beginning=intnx('month', '05FEB2010'd, 1, 'b'); middle=intnx('month', '05FEB2010'd, 1, 'm'); end=intnx('month', '05FEB2010'd, 1, 'e'); sameday=intnx('month', '05FEB2010'd, 1, 's'); |
결과값은 다음과 같습니다.
INTNX와 함께 INTCK 기능을 사용하시면 시너지 효과를 발휘할 수 있습니다.
INTCK 함수 예시
INTCK 함수가 날짜, 시간 또는 데이트 값 사이의 인터벌 경계 수를 정수로 변환한다는 것은 널리 알려져있습니다. 하단의 첫번 째 예시는 함수가 기본 인터벌 내에서의 구현 하는 기능을 보여 줍니다.
Example 1. 날짜 정렬
years=intck('year','01jan2009'd,'01jan2010'd); SEMIYEAR=intck('SEMIYEAR','01jan2009'd,'01jan2010'd); quarters=intck('qtr','01jan2009'd,'01jan2010'd); months=intck('month','01jan2009'd,'01jan2010'd); weeks=intck('week','01jan2009'd,'01jan2010'd); days=intck(‘day','01jan2009'd,'01jan2010'd); |
상단의 예시에서는 2009 년 1 월 1 일과 2010 년 1 월 1 일의 두 날짜 간의 차이를 계산합니다.
결과값은 다음과 같습니다.
Example 2. 데이트타임 정렬
hours=intck('hour','01jan2009:00:00:00'dt,'01jan2010:00:00:00'dt); minutes=intck('minute','01jan2009:00:00:00'dt,'01jan2010:00:00:00'dt); seconds=intck(‘second','01jan2009:00:00:00'dt,'01jan2010:00:00:00'dt); |
결과값은 다음과 같습니다.
Example 3. 시간 정렬
hours=intck('hour','00:00:00't,'12:00:00't); minutes=intck('minute','00:00:00't,'12:00:00't); seconds=intck('second','00:00:00't,'12:00:00't); |
여기에서는 두 시간 값인 00:00:00 (자정)과 12:00:00 (정오)의 차이를 계산합니다.
결과값은 다음과 같습니다.
주의! INTCK 함수는 두 값 사이의 완전한 인터벌을 계산하지 않습니다. 하단의 예시에서는 12 월 31 일과 1 월 1 일 사이의 '연도'차이를 계산하는 방법을 보여줍니다.
Example 4. 연도 차이(경계)
years=intck(‘year','31dec2009'd,'01jan2010'd); |
결과값은 다음과 같습니다.
일 년이 아닌 하루에 대한 결과값으로 오해 할 수 있습니다. 이 결과값은 두 날짜 사이의 간격 인터벌 경계에 대한 정수를 불러온 것입니다. 상단의 예시에서 경계는 간격에 포함된 01JAN2010의 값입니다.
해결 방법은 간단합니다. year대신 day365를 사용하면 됩니다. day365 매개 변수는 INTCK 함수에 하루에 365을 곱하도록 명령합니다.
Example 5. 365를 곱한 일수
결과값은 다음과 같습니다.
예상했던 것과 같은 값입니다. 원하는 방식에 따라 2 년차 또는 4 주차 등 자유롭게 결합 할 수 있습니다. 형식을 변경하는 일부 작업은 INTCK 기능을 다룰 때도 유용합니다. 하단의 예시를 통해서 함수에 대한 이해를 높일 수 있습니다.
Example 6.
format a1 b1 date9.; a0='01jan2009:00:00:00'dt; b0='01jan2010:00:00:00'dt; a1=datepart(a0); b1=datepart(b0); days=intck('day',a1,b1); |
결과값은 다음과 같습니다.
days = 365
format a1 b1 date9.; a0='01jan2009:00:00:00'dt; b0='01jan2010:12:00:00'dt; a1=timepart(a0); b1=timepart(b0); hour=intck(‘hour',a1,b1); |
결과 값은 다음과 같습니다.
시간 = 12
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.