본문으로 바로가기

[Oracle] 날짜 함수, 날짜 계산

category DB/Oracle 2016. 11. 11. 14:57

언어를 여러개하다보니 자주 쓰지만 쓸때마다 헷갈림..

하나씩 쿼리 날려보며 자주쓰는 유형 정리

 

 

-- 오늘 날짜, 원하는 포맷으로 출력(날짜 계산가능) 

SELECT TO_CHAR(SYSDATE,'YYYYMMDD') FROM DUAL -- 20161111

SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD') FROM DUAL -- 2016/11/11

SELECT TO_CHAR(SYSDATE,'RR/MM/DD') FROM DUAL  -- 16/11/11

SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL -- 2016/11/11 15:08:36

SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL  -- 5      >  요일 (1일 2월 3화 4수 5목 6금 7토)

SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL --
SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL --  목요일 

 

 

-- 해당일이 몇 주차 구하기 (월~일 체계)
SELECT TO_CHAR(SYSDATE,'IW') FROM DUAL --45 

 

-- 당월 첫 주 특정요일 
SELECT NEXT_DAY((TRUNC(SYSDATE,'MM')-1),'수') FROM DUAL  
SELECT NEXT_DAY((TRUNC(SYSDATE,'MM')-1),'수요일') FROM DUAL
SELECT NEXT_DAY((TRUNC(SYSDATE,'MM')-1),수) FROM DUAL

-- 2016/11/02 00:00:00 (DATE)

 

-- 당월 마지막 주 목요일
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),'목') FROM DUAL
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),'목요일') FROM DUAL
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),5) FROM DUAL

-- 2016/11/28 11:49:47  (DATE)

 

-- 당월 처음 날짜

SELECT TRUNC(SYSDATE,'MM') FROM DUAL --2016/11/01 00:00:00 (DATE)

SELECT TO_CHAR(TRUNC(SYSDATE,'MM'),'YYYYMMDD') FROM DUAL --20161101

-- 당월 마지막 날짜
SELECT LAST_DAY(SYSDATE) FROM DUAL --2016/11/30 15:00:00 (DATE)

SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYYMMDD') FROM DUAL --20161130

 

-- 당월 첫주 날 수
SELECT TO_NUMBER(TO_CHAR(NEXT_DAY((TRUNC(SYSDATE,'MM')-1),1),'DD')) FROM DUAL  -- 6

-- 당월 마지막주 날 수
SELECT LAST_DAY(SYSDATE) - NEXT_DAY((LAST_DAY(SYSDATE)-7),2) + 1 FROM DUAL  -- 3

 

-- 전월의 마지막 날 구하기
SELECT TO_CHAR(TRUNC(SYSDATE,'MM')-1,'YYYYMMDD') FROM DUAL

 

-- 하루를 더하고 2달 앞의 일자 구하기
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('20161111','YYYYMMDD')+1,2),'YYYYMMDD') FROM DUAL  -- 170112

 

 

-- 해당일 포함 된 주의 목요일 날짜
SELECT CASE WHEN TO_CHAR(TO_DATE('20100629','YYYYMMDD'), 'D') < 5 THEN TRUNC(TO_DATE('20100629','YYYYMMDD')-5, 'IW')+3
            ELSE TRUNC(TO_DATE('20100629','YYYYMMDD'), 'IW')+3 END RESULT
FROM DUAL

 

-- 요일 구하기 (한글)
SELECT TO_CHAR(SYSDATE, 'DY') FROM DUAL -- 월
SELECT TO_CHAR(SYSDATE, 'DY', 'NLS_DATE_LANGUAGE=KOREAN') FROM DUAL -- 월
SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL -- 월요일

 

-- 해당주 목요일 날짜
SELECT TRUNC(SYSDATE, 'IW')+3 FROM DUAL
 
-- 당월 마지막 날의 요일 구하기 (1=일 ~ 7=토)
SELECT TO_CHAR(LAST_DAY(SYSDATE),'D') FROM DUAL
-- 마지막주 목요일 (1=일 ~ 7=토)
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),5) FROM DUAL

-- 마지막주 월요일 (1=일 ~ 7=토) 의 하루 전
SELECT NEXT_DAY((LAST_DAY(SYSDATE)-7),2)-1 FROM DUAL 

 

'DB > Oracle' 카테고리의 다른 글

[Oracle] tnsnames.ora 경로 및 파일 수정 하기  (0) 2020.07.06