안녕하세요..
초보가 몇시간째 헤매다 질문드립니다.ㅠㅠ
하루24시간 30분간격으로 배치프로그램이 돌고 있습니다.
예를들어
오전 09:00 에 배치프로그램이 실행되면 날짜컬럼에서 201610140830 ~ 201610140859 사이의 시간대를 셀랙트하고
오전 09:30 에 배치프로그램이 실행되면 날짜컬럼에서 201610140900 ~ 201610140929 사이의 시간대를 셀랙트하고
오전 10:00 에 배치프로그램이 실행되면 날짜컬럼에서 201610140930 ~ 201610140959 사이의 시간대를 셀랙트하고
이런식으로 30분간격으로 24시간 프로그램이 실행될때마다 날짜컬럼에서 현재시간의 30분전 시간 데이터를 추출하려면
어떤식으로 쿼리를짜야되나요?
고수님들 답변좀 부탁드리겠습니다.
ex)날짜컬럼 INSDT
--------------------
.
.
.
201610140824
201610140827
201610140829
201610140830
201610140831
201610140833
201610140836
201610140845
201610140856
.
.
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | WITH T AS ( SELECT '201610140824' INSDT FROM DUAL UNION ALL SELECT '201610140827' INSDT FROM DUAL UNION ALL SELECT '201610140829' INSDT FROM DUAL UNION ALL SELECT '201610140830' INSDT FROM DUAL UNION ALL SELECT '201610140831' INSDT FROM DUAL UNION ALL SELECT '201610140833' INSDT FROM DUAL UNION ALL SELECT '201610140836' INSDT FROM DUAL UNION ALL SELECT '201610140845' INSDT FROM DUAL UNION ALL SELECT '201610140856' INSDT FROM DUAL ) SELECT * FROM T WHERE INSDT >= TO_CHAR( CASE WHEN TO_CHAR(SYSDATE, 'mi' ) >= '30' THEN TRUNC(SYSDATE, 'hh24' ) ELSE TRUNC(SYSDATE, 'hh24' ) - 0.5 / 24 END , 'YYYYMMDDHH24MISS' ) AND INSDT < TO_CHAR( CASE WHEN TO_CHAR(SYSDATE, 'mi' ) >= '30' THEN TRUNC(SYSDATE, 'hh24' ) + 0.5 / 24 ELSE TRUNC(SYSDATE, 'hh24' ) END , 'YYYYMMDDHH24MISS' ) |