아래의 SQL은 Oracle(오라클), Tibero(티베로), Cubrid(큐브리드)에서 모두 작동함.
단, Cubrid는 dual 대신에 DB_ROOT 를 사용하거나, dual을 아래와 같이 view 로 만들어줘야 동일하게 사용 가능.
Cubrid에서 dual 을 view 로 만드는 SQL
CREATE OR REPLACE VIEW dual AS SELECT [DB_ROOT].[triggers], [DB_ROOT].[charset], [DB_ROOT].[lang], [DB_ROOT].[timezone_checksum] FROM [DB_ROOT] [DB_ROOT] COMMENT='dual' |
-- 두 날짜 사이의 모든 일수 가져오기
SELECT TO_DATE('20231101','YYYYMMDD') + LEVEL - 1 AS dates
FROM dual
CONNECT BY LEVEL <= (TO_DATE('20231115', 'YYYYMMDD')-TO_DATE('20231101','YYYYMMDD')+1)
;
-- 하나의 날짜로 마지막 날짜까지 가져와서 그 달의 모든 일수 가져오기
SELECT TO_DATE('20231101','YYYYMMDD') + LEVEL - 1 AS dates
FROM dual
CONNECT BY LEVEL <= (LAST_DAY(TO_DATE('20231101', 'YYYYMMDD'))-TO_DATE('20231101','YYYYMMDD')+1)
;
-- 해당 월 또는 날짜가 속한 달의 마지막 날을 가져오기
SELECT
LAST_DAY(TO_DATE('2022-01', 'YYYY-MM'))
, LAST_DAY(TO_DATE('2022-01-15', 'YYYY-MM-DD'))
from dual;
'프로그래밍 > DB 관련' 카테고리의 다른 글
[DB 관련] RAC 환경에서 시퀀스 중복 문제 (0) | 2020.11.17 |
---|---|
[DB관련][SQL][펌]오라클 OVER() 함수 설명 (0) | 2020.07.09 |
[DB관련] 특정 컬럼명 검색 (0) | 2020.01.28 |
[Oracle] 오라클 MERGE 문 간단한 예제로 한번에 INSERT, UPDATE 처리 (0) | 2019.08.08 |
[DB 관련] MySQL - Error Code: 1175. You are using safe update mode (0) | 2017.11.28 |