[SAS 프로그래밍] SAS 함수 (6)
안녕하세요^^
지난 시간에 이어, 날짜와 관련된 SAS 함수를 알아보도록 하겠습니다.
1. 날짜를 입력하는 함수
2. SAS date 혹은 날짜 값으로부터 원하는 날짜를 추출하는 함수
3. 날짜 계산과 관련된 함수
이번 시간에는 세 번째 시간으로 ‘날짜 계산과 관련된 함수’에 대해서 알아보도록 하겠습니다.
▷ INTCK(‘interval<.shift>’, start-value, end-value)
INTCK 함수는 두 날짜, 혹은 두 시간의 차이를 계산해 줍니다. Multiple 옵션으로 날짜 간격을 조정할 수 있고, .shift 옵션으로 starting point를 지정해 줄 수 있습니다.
Intervals으로 사용 가능한 date units은 아래와 같습니다.
Interval |
Description |
DAY |
Day |
WEEK |
Week |
WEEKDAY |
Each weekday (Monday to Friday, or any set of days you choose) |
TENDAY |
Ten-day period |
SEMIMONTH |
Two-week period |
MONTH |
Month |
QTR |
Quarter (Jan-Mar = 1, Apr-Jun = 2 etc.) |
SEMIYEAR |
Half year |
YEAR |
Year |
Intervals으로 사용 가능한 time units은 아래와 같습니다.
Interval |
Description |
SECOND |
Seconds |
MINUTE |
Minutes |
HOUR |
Hours |
Intervals으로 사용 가능한 datetime units은 아래와 같습니다.
Interval |
Description |
DTDAY |
Day |
DTWEEK |
Week |
DTWEEKDAY |
Each weekday (Monday to Friday) |
DTTENDAY |
Ten-day period |
DTSEMIMONTH |
Two-week period |
DTMONTH |
Month |
DTQTR |
Quarter (Jan-Mar=1, Apr-Jun=2, etc.) |
DTSEMIYEAR |
Half year |
DTYEAR |
Year |
예를 들어 년도(YEAR)의 간격을 계산할 때, startind date가 2002년 1월 1일이고 ending date가 2002년 12월 31일 인 경우 함수 값은 0으로 나타납니다.
같은 계산법으로 startind date가 2002년 12월 31일이고 ending date가 2003년 1월 1일 인 경우 함수 값은 1으로 나타납니다.
INTCK5와 같이 YEAR2로 표현된 값은 interval이 2년으로 2002년 1월 1일부터 2012년 12월 31일 사이의 날짜 계산 함수값은 5입니다.
INTCK6과 같이 MONTH6.3으로 표현된 값은 interval이 6개월이고 shift value가 3개월로, 매년 3월과 9월마다 6개월 간격으로 날짜 차이를 계산한다. 따라서 INTCK6.3의 함수값은 2002년 1월 1일부터 2002년 5월 31일의 차이값이므로 1의 결과를 나타냅니다.
INTCK7과 같이 WEEK.4는 starting point값을 매주 수요일로 지정하여 계산합니다.
INTCK8과 같이 HOUR4는 4시간 간격으로 시간 차이를 계산합니다.
▷ INTNX(‘interval, start-date, increment <, ‘ alignment’>)
INTNX 함수는 기준 날짜로부터 특정 기간 이후의 날짜를 계산하여 나타내주는 함수입니다.
Alignment는 옵션으로 BEGINNING(B), MIDDLE (M), END(E), or SAMEDAY(S) 의 값들을 지정 할 수 있으며, default는 BEGINNIG 입니다.
Interval이 week이고 start-date가 1960년 1월 1일이고 increment가 1인 경우, 결과값은 1960년 1월 3일(일주일이 시작되는 요일인 일요일)을 나타내어 줍니다. 그러나 같은 날짜와 기간을 입력 후 alignment로 MIDDLE값을 설정해 주면 1960년 1월 6일(일주일의 가운데 요일인 수요일)이 출력되게 됩니다.
▷ YRDIF(start-date, end-date, ‘basis’)
YRDIF 함수는 두 날짜 사이의 년도(year)차이를 계산하여 나타내어 줍니다.
‘Basis’는 SAS에서 계산하는 방법을 설정합니다. ‘first value/second value’로 표현하게 되는데, first value는 월의 일 수(the number of days in a month)를 지정하는 부분이고 second value는 년도의 일 수(the number of days in a year)
‘30/360’ Uses 30-day months and 360-day years in the calculation.
‘ACT/365’ Uses the actual number of days between the two dates, but uses 365-day years, even if a leap year is in the interval.
‘ACT/360’ Uses the actual number of days between the two dates, but uses 360-day years.
▷ HOLIDAY (holiday, year)
HOLIDAY 함수는 holiday 이름과 년도를 입력하면 SAS date를 나타내주는 함수입니다.
▷ DATEJUL (jul-date)
DATEJUL 함수는 Julian date를 SAS date로 변환시켜주는 함수입니다.
▷ JULDATE (date)
JULDATE 함수는 SAS date를 Julian date로 변환시켜주는 함수입니다.
▷ JULDATE7 (date)
JULDATE7 함수는 SAS date를 7자리 Julian date로 변환시켜주는 함수입니다.
이상으로 날짜 계산과 관련된 함수에 대해 알아보았습니다.
감사합니다^^
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.