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 40853 게시물 읽기
No. 40853
시작일자/종료일자를 가지고 그 사이 날짜 다 뽑아낼려면...
작성자
초보
작성일
2015-07-08 17:29
조회수
7,701

안녕하세요. 질문 하나 드릴께요.

시작일자/종료일자 2개를 가지고 그 사이 날짜를 다 뽑아낼려면 SQL로 어떻게 구현하면 될까요?

예를 들어 20150701~20150720 / 20150710~20150731 이렇게 두 개의 구간대를 입력하면

서로 겹치는 구간대를 DISTINCT 하여 총 일수를 구하는 겁니다.

위의 예시로 보자면 7월1일~31일 까지의 날짜가 OUTPUT으로 나오면 됩니다.

다른 예로는 20150701~20150705 / 20150715~20150720 이렇게 두 개의 구간대의 경우는

7월1일~5일 / 7월15일~20일 까지 총 10개의 날짜가 OUTPUT으로 나오면 됩니다.

자바 배열 쓰듯이 DUAL에 CONNECT BY문을 쓴 후에 UNION을 하면 될거 같은데 될 듯 말 듯 안되네요 ㅠㅠ

부디 한 수 배움을 요청드립니다.

감사합니다.

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

WITH T AS (SELECT '20150701' FR_YMD -- ;v_FR_DT

,'20150720' TO_YMD -- :v_TO_DT

FROM DUAL )

SELECT TO_CHAR(TO_DATE(FR_YMD,'YYYYMMDD') + LEVEL -1 ,'YYYYMMDD') DT

FROM T

CONNECT BY LEVEL <= TO_DATE(TO_YMD,'YYYYMMDD')-TO_DATE(FR_YMD,'YYYYMMDD') +1

;

곽성일(zvvvvvz)님이 2015-07-08 18:22에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40856union all 관련 여쭤봅니다. [1]
궁금
2015-07-10
7015
40855JDBC 라이브러리 지원버전
초보초보
2015-07-10
7100
40854특정일자에서 3.5개월전의 날짜를 어떻게 구할 수 있는지요? [3]
김종훈
2015-07-09
8441
40853시작일자/종료일자를 가지고 그 사이 날짜 다 뽑아낼려면... [1]
초보
2015-07-08
7701
40852질문좀 드려봐요(설문조사 통계 데이터) [2]
염진호
2015-07-08
7532
40851주차 관련해 질문있습니다. [1]
ORACLE
2015-07-08
7300
40850Database Time Spent Waiting 이게 무슨뜻인가요? [1]
염정훈
2015-07-08
7681
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다