30분간격으로 데이터를 가져오고 싶습니다. 0 3 1,920

by 초밥왕 [SQL Query] 30분배치 [2016.10.14 00:42:59]


안녕하세요..
초보가 몇시간째 헤매다 질문드립니다.ㅠㅠ

하루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
     .
     .
     .

by jkson [2016.10.14 08:31:55]
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')

 


by 마농 [2016.10.14 08:32:02]

다음 쿼리의 결과를 이용해 조건검색하세요.

1
2
3
4
5
6
7
SELECT TO_CHAR(stm           , 'yyyymmddhh24mi') stm
     , TO_CHAR(stm + 29/24/60, 'yyyymmddhh24mi') etm
  FROM (SELECT TRUNC(sysdate, 'hh')
             - DECODE(TRUNC(sysdate, 'hh'), ROUND(sysdate, 'hh'), 30/24/60, 0) stm
          FROM dual
        )
;

 


by 초밥왕 [2016.10.14 11:53:37]

두분 답변 너무 감사드립니다. 꾸벅

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입