본문 바로가기
소소한 ORACLE 지식

[Oracle]CONNECT BY LEVEL을 이용한 평일, 주말 일자 구하기

by 해뤼맘 2022. 12. 3.
728x90
반응형

자주 사용 하지만
사용할 때마다 헷갈려서
따로 포스팅으로 정리해 봅니다.

CONNECT BY LEVEL은연속된 숫자를 조회할 때 사용하는 계층 쿼리입니다.

예제> 5 이하의 숫자를 차례로 조회

SELECT LEVEL
FROM DUAL
CONNECT BY LEVEL < 5
결과

CONNECT BY LEVEL을 사용하여
주말, 평일을 구분해보도록 하겠습니다.

예제> 지정한 기간 동안의 일자가 주말인지 평일인지 구분하여 조회

SELECT 
TO_CHAR(YYYYMMDD, 'YYYYMMDD') AS 일자
, CASE WHEN TO_CHAR(YYYYMMDD, 'd') IN (1, 7) THEN  '주말'
ELSE '평일'
END AS 주중구분
FROM
	(
	SELECT START_DATE + LEVEL - 1 YYYYMMDD
	FROM
		(
		SELECT TO_DATE('20221101', 'YYYYMMDD') START_DATE
			 , TO_DATE('20221130', 'YYYYMMDD') END_DATE
		FROM DUAL
		)
	CONNECT BY
		LEVEL <= END_DATE - START_DATE + 1 )


CONNECT BY LEVEL을 사용하여
지정한 일자를 순서대로 나열한 후 TO_CHAR(YYYYMMDD, 'd')을 사용하여 주말, 평일을 구분합니다.

TO_CHAR(YYYYMMDD, 'd')의 값은 주 중의 일을 1~7까지로 표시합니다.

1 : 일요일
2 : 월요일
3 : 화요일
4 : 수요일
5 : 목요일
6 : 금요일
7 : 토요일

TO_CHAR(YYYYMMDD, 'd')을 이용하여
1,7은 주말
그 외의 값은 평일로 정의합니다.

조회 결과입니다.

결과


이상 오라클에서 평일, 주말 일자 조회 쿼리였습니다.

728x90
반응형

댓글