데이터베이스2018. 1. 2. 19:03

<오라클 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
Posted by 미랭군