아래의 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;

 

+ Recent posts