database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38823 게시물 읽기
No. 38823
비어있는 시간구하는 방법 sql 좀 알려주세요...
작성자
김영민(가온사랑)
작성일
2011-08-25 17:19
조회수
4,747

안녕하세요 제가 구하고 싶은건

사용하지 않는 시간대의 from ~ to 를 구하고 싶습니다.

단 from 시간에서 -1시간 , to 시간에서 +1시간을 뺀 값 --> "20110801 18:00 ~ 20110801  19:00"

고수님의 가르침 부탁드립니다.

WITH t AS
(
SELECT TO_DATE('201108011400', 'YYYYMMDDHH24MI') SDT, TO_DATE('201108011700', 'YYYYMMDDHH24MI') EDT FROM dual
UNION
SELECT TO_DATE('201108012000', 'YYYYMMDDHH24MI') SDT, TO_DATE('201108012359', 'YYYYMMDDHH24MI') EDT FROM dual
)

이 글에 대한 댓글이 총 3건 있습니다.

WITH t AS
 (
 SELECT TO_DATE('201108011400', 'YYYYMMDDHH24MI') SDT, TO_DATE('201108011700', 'YYYYMMDDHH24MI') EDT FROM dual
 UNION
 SELECT TO_DATE('201108012000', 'YYYYMMDDHH24MI') SDT, TO_DATE('201108012359', 'YYYYMMDDHH24MI') EDT FROM dual
 )
SELECT
 FROM_DT
    ,TO_DT
FROM(
  SELECT
      LAG(EDT + 1/24) OVER(ORDER BY SDT ASC) AS FROM_DT
      ,SDT - 1/24 AS TO_DT
  FROM T
)WHERE FROM_DT IS NOT NULL
 

앞행 EDT와 SDT의 차이가 2시간 이상 난나는 가정하에 작성했네요..

더 멋진 쿼리는 다른분이 해 주실거에요.. ^^;;;;

 

초보님이 2011-08-25 18:25에 작성한 댓글입니다. Edit

한가지더 질문 드릴께염...

 

WITH t AS
 (
 SELECT TO_DATE('201108011000', 'YYYYMMDDHH24MI') SDT, TO_DATE('201108011300', 'YYYYMMDDHH24MI') EDT FROM dual
 UNION
 SELECT TO_DATE('201108011400', 'YYYYMMDDHH24MI') SDT, TO_DATE('201108011700', 'YYYYMMDDHH24MI') EDT FROM dual
 UNION
 SELECT TO_DATE('201108012000', 'YYYYMMDDHH24MI') SDT, TO_DATE('201108012359', 'YYYYMMDDHH24MI') EDT FROM dual
 )
SELECT
 FROM_DT
    ,TO_DT
FROM(
  SELECT
      LAG(EDT + 1/24) OVER(ORDER BY SDT ASC) AS FROM_DT
      ,SDT - 1/24 AS TO_DT
  FROM T
)WHERE FROM_DT IS NOT NULL
 

이렇게 조회할 경우 좀 틀리게 나오는데... 다른 방법은 없을까여??

김영민(가온사랑)님이 2011-08-25 19:16에 작성한 댓글입니다.

SELECT from_dt
     , to_dt
  FROM (SELECT MAX(edt) OVER(ORDER BY sdt, edt
                ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
                 ) + 1/24 from_dt
             , sdt - 1/24 to_dt
          FROM t
        )
 WHERE from_dt < to_dt
;

마농(manon94)님이 2011-08-26 10:07에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38826distinct 쓸때 hash groupby 가 풀립니다. [1]
슬라임
2011-08-27
4289
38825특정 유저가 사용하는 테이블스페이스 확인 방법??? [2]
장영권
2011-08-27
4651
38824목록 도움요청 [1]
오라클초보임
2011-08-26
4108
38823비어있는 시간구하는 방법 sql 좀 알려주세요... [3]
김영민
2011-08-25
4747
38822쿼리 좀 부탁 드립니다. [2]
초보
2011-08-25
3834
38820안뇽하세요 질문이 있습니다. (재귀 프로시져) [2]
윤명철
2011-08-25
5286
38819자동백업스크립트입니다.
오라클초보임
2011-08-25
5025
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다