사이트맵  |  Contact Us
 
홈 > 참여마당 > SAS 질문과 답변
[SAS 프로그래밍] 특정 시간 이후 데이터를 추출하는 방법이 궁금합니다. 2018.04.16
이선준 280 0
http://www.mysas.co.kr/sas_club/b_answer.asp?b_no=7667&cmd=content&bd_no=6

안녕하세요. 

SAS로 DB를 추출하다가 궁금한 게 있어서 질문 올립니다. 

DB가 그리니치 표준시(GMT)를 사용하고 있어 한국시간보다 9시간 빠르다고 할 때, 이걸 한국시간 기준으로 9시간을 더해서 추출하고 싶은데요. 

예를 들어, 2018-04-01 07:10:00 에 쌓인 데이터가 있다면, DB상에는 2018-03-31 22:10:00 으로 9시간 앞으로 저장되어 있는 상태입니다. 

3월달 데이터를 추출하려면 2018-03-31 13:00:00 ~ 2018-03-31 13:00:00 이 시간대를 봐야 하는 건데, 여러번 나눠서 뽑지 않고 한 번에 추출할 수 있는 방법이 있을까요? (참고로, 컬럼속성은 datetime8. 입니다. => 03MAR2018:00:00:00)

 

MySQL로는 아래와 같이 추출했는데, SAS에서는 사용할 수 없는 날짜함수라 어떻게 해야 될지 잘 모르겠네요ㅠ  

변수명 > DATE_ADD('2018-03-01 00:00:00', INTERVAL -9 HOUR) and 변수명 < DATE_ADD('2018-04-01 00:00:00', INTERVAL -9 HOUR)

 

혹시 아시는 분 있으면 답변 부탁드립니다!

감사합니다.

 
 
 
MYSAS 시샵   [2018/04/16 4:15]
안녕하세요.
말씀하신 사항을 예제 데이터를 만들어서 수행하였습니다. 아래의 코드를 참고해주세요.
DB상의 날짜 변수(TIME)를 한국시간을 나타내는 변수로 새롭게 생성하였습니다 (KOR_TIME).
그 후 3월 데이터만 PRINT 하도록 하였습니다. 새로운 데이터를 생성하신다면 DATA STEP에서 IF문을 사용하시면 됩니다.

data A;
LENGTH FAST_TIME $20.;
INPUT FAST_TIME $;
CARDS;
28FEB2018:13:00:00
01MAR2018:09:00:00
01MAR2018:09:00:01
03MAR2018:13:00:00
03MAR2018:13:00:31
03MAR2018:00:00:00
31MAR2018:22:10:00
;
RUN;

DATA B;
SET A;
KOR_TIME = INTNX('HOUR' INPUT(FAST_TIME DATETIME20.) 9 'S');
MONTH=MONTH(DATEPART(KOR_TIME));
FORMAT KOR_TIME DATETIME20.;
RUN;

PROC PRINT DATA=B;
WHERE MONTH=3;
RUN;
이선준   [2018/04/16 5:25]
알려주신 대로 해보니 잘 되네요~
정말 감사합니다!ㅎㅎ
휴대폰 번호
휴대폰 인증번호
 
 라이센스 갱신을 해도 sas를 껐다 키면 다시 갱신이 안 되어 있습니다
 요인분석시 기존 변수를 grouping하여 변수 생성하는 방법이 궁금합니다.