<오라클 9i 이상>
1)두 날짜 사이의 달 구하기
SELECT ROWNUM RM
,TO_CHAR (ADD_MONTHS (TO_DATE ('200511', 'YYYYMM'), LEVEL - 1),'YYYYMM') mon
FROM DUAL
CONNECT BY ADD_MONTHS (TO_DATE ('200511', 'YYYYMM'), LEVEL-1) <=TO_DATE ('200610', 'YYYYMM')
2)두 날짜 사이의 날짜 구하기
SELECT YMD FROM(
SELECT TO_DATE ('20050422', 'YYYYMMDD')+(LEVEL - 1) YMD
FROM DUAL
CONNECT BY TO_DATE ('20050422', 'YYYYMMDD')+(LEVEL-1) <=TO_DATE ('20050521', 'YYYYMMDD'))
또는
SELECT TO_CHAR(TO_DATE(BB.DAY, 'YYYYMMDD') + NUM, 'YYYY-MM-DD') AS DAY
FROM (
SELECT ROWNUM AS NUM
FROM DICTIONARY A,(
SELECT B.DAY AS BDAY, C.DAY AS CDAY
FROM
( SELECT TO_CHAR(SYSDATE,'YYYYMM') || '01' AS DAY FROM DUAL ) B,
( SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYYMMDD') AS DAY FROM DUAL ) C
) B
WHERE ROWNUM <= TO_DATE(B.CDAY, 'YYYYMMDD') - TO_DATE(B.BDAY, 'YYYYMMDD') + 1) AA,
( SELECT TO_CHAR(SYSDATE - TO_NUMBER(TO_CHAR(SYSDATE,'D')) + 1,'YYYYMMDD') AS DAY FROM DUAL ) BB
이거는 원하는 시작일부터 끝일까지 가지고 오는 쿼리입니다.
SELECT TO_CHAR(TO_DATE('[SDATE]', 'YYYY-MM-DD') + NUM-1, 'YYYY-MM-DD') AS DAY
FROM (
SELECT ROWNUM NUM
FROM DICTIONARY
WHERE ROWNUM <= TO_DATE('[EDATE]', 'YYYY-MM-DD') - TO_DATE('[SDATE]', 'YYYY-MM-DD') + 1
)
'데이터베이스' 카테고리의 다른 글
집계 쿼리 (0) | 2023.02.07 |
---|---|
[ORACLE] DB Link 설정 (0) | 2018.10.15 |
오라클의 GREATEST, LEAST 함수 (0) | 2017.12.20 |
FIRST, LAST (최대, 최소값을 가진 로우 추출) (0) | 2017.12.15 |
피어슨 상관계수 SQL (0) | 2017.11.30 |